SpringMVC概念

    技术2022-07-11  77

    概念

    什么是Spring MVC ?

    spring的子框架,将model,view,controller分离,简化开发

    SpringMVC的流程(工作原理)?

    浏览器发送HTTP请求至DispatcherServletDispatcherServlet收到请求寻找处理器HandlerMappingHandlerAdapter经过适配调用具体的处理器(Controller)Controller执行完成返回ModelAndViewHandlerAdapter将controller执行结果ModelAndView返回给DispatcherServletDispatcherServlet将ModelAndView传给ViewReslover视图解析器ViewReslover解析后返回具体ViewDispatcherServlet根据View进行渲染视图DispatcherServlet响应用户

    Springmvc的优点:

    可以支持各种视图技术,而不仅仅局限于JSP与Spring框架集成(如IoC容器、AOP等)支持各种请求资源的映射策略清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配(HandlerAdapter), 视图解析器(ViewResolver)

    Spring MVC的主要组件?

    DispatcherServlet:请求入口

    HandlerMapping:请求派发,负责请求和控制器建立一一对应的关系

    Controller:处理器

    ModelAndView:封装模型信息和视图信息

    ViewResolver:视图处理器,定位页面

    springMVC和struts2的区别有哪些?

    拦截机制的不同:Struts2是类级别的拦截(独立的Interceptor机制,配置文件量大),SpringMVC是方法级别的拦截(使用AOP)

    底层框架的不同:Struts2采用Filter实现(在容器启动后初始化),SpringMVC采用Servlet实现(调用时初始化)

    性能:Struts2低,SpringMVC高

    配置方面:spring MVC和Spring是无缝的。项目的管理和安全上也比Struts2高

    SpringMVC怎么样设定重定向和转发的?

    转发:返回值前加forward:

    重定向:返回值前加redirect:

    转发:是在服务器内部控制权的转移,是由服务器区请求,客户端并不知道是怎样转移的,客户端浏览器的地址不会显示出转向的地址。

    重定向:是服务器告诉了客户端要转向哪个地址,客户端再自己去请求转向的地址,因此会显示转向后的地址,浏览器至少进行了两次的访问请求。

    SpringMvc怎么和AJAX相互调用的?

    通过URL传参单值传参对象传参对象序列化传参List传参开发时常用JSON映射,在方法前加@RequestBody注解

    SpringMvc里面拦截器是怎么写的:

    实现HandlerInterceptor接口

    继承适配器类

    在SpringMvc的配置文件中配置拦截器

    如何解决POST请求中文乱码问题,GET的又如何处理呢?

    post:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8

    get:修改tomcat配置文件添加编码与工程编码一致,或者对参数设置编码格式

    使用注解,请求时设置consumes=“application/json;charset=utf-8”

    Spring MVC的异常处理 ?

    使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver实现Spring的异常处理接口HandlerExceptionResolver(自定义异常处理器)使用@ExceptionHandler注解实现异常处理

    SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么

    SpringMvc:DispatchServletStruts1:ActionServletStruts2:StrutsPrepareAndExecuteFilter

    SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

    默认是单例在多线程访问时有线程安全问题不使用同步,不在控制器中写成员变量

    SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

    @Controller可以使用@RestController,但是@RestController中也使用了@Controller

    @RequestMapping注解用在类上面有什么作用?

    表示类中的所有响应请求的方法都是以该地址作为父路径

    Spring MVC 常用的一些注解

    @Controller@RestController@RequestMapping@PathVariable@RequestParam@RequestBody。。。

    怎么样把某个请求映射到特定的方法上面?

    在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径

    如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?

    在@RequestMapping注解里面加上method=RequestMethod.GET或者使用@GetMapping

    怎么样在方法里面得到Request,或者Session?

    在方法上加@ModelAttribute,参数中定义HttpServletRequest,HttpServletResponse,HttpSession,然后使用对象.getXXX获取

    如果想在拦截的方法里面得到从前台传入的参数,怎么得到?

    直接在形参里面声明这个参数,名字和传过来的参数一样

    如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

    直接在方法中声明这个对象,SpringMvc自动把属性赋值到这个对象里面

    SpringMvc中函数的返回值是什么?

    一般是String,别的也可以

    SpringMvc用什么对象从后台向前台传递数据的?获取前台数据?

    Model对象,HttpServletRequest对象,Map对象参数获取,对象获取,@RequestParam获取,@PathVariable请求路径获取

    SpringMvc中有个类把视图和数据都合并的一起的,叫什么?

    ModelAndView

    怎么样把ModelMap里面的数据放入Session里面?

    在类上面加上@SessionAttributes

    当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?

    加上@ResponseBody注解

    如何使用 Spring MVC 完成 JSON 操作

    使用@RequestBody注解进行数据转换
    Processed: 0.024, SQL: 9