1.SpringMVC的流程
首先用户的请求会到达前端控制器DispacherServlet,然后前端控制器将请求交给【处理器映射器】HandlerMapping,找到处理请求的处理器Handler,找到之后再将Handler交给【适配器】HandlerAdaptor进行适配,然后再进行数据校验,数据转换,数据封装等工作,之后就会执行Handler处理器,返回一个ModelAndView对象,最后前端控制器将ModelAndView对象交给视图解析器处理,返回物理视图,再将model中的数据渲染到页面中响应给请求方。
2.SpringMVC和struts2的区别有哪些?
1.springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。
2.springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
3.SpringMVC怎么样设定重定向和转发的
转发:在返回值前面加"forward:",譬如"forward:main"
重定向:在返回值前面加"redirect:",譬如"redirect:
转发和重定向的区别?(几次请求)
重定向:多次请求 - 地址栏变化 - 不能共享request中的数据 - 不能访问WEB-INF的资源 - 可以访问外部资源
转发:一次请求 - 地址栏没有变化 - 能共享request中的数据 - 可以访问WEB-INF的资源 - 不可以访问外部资源
SpringMvc默认用的是转发:转发是内部转发,效率要高一些
SpringMvc中如果非要重定向:return "redirect:/xxx.jsp"; - 不会经过是视图解析器
4.SpringMvc的控制器是单例模式吗
SpringMvc控制器是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的
解决方案是在控制器里面不能写字段。
5.SpringMvc怎么和AJAX相互调用
通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :
1)加入Jackson.jar
2)在配置文件中配置json的映射
3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。
6.如何解决中文乱码问题
1)解决post请求乱码问题:
在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;
2)get请求中文参数出现乱码解决方法有两个:
修改tomcat配置文件添加编码与工程编码一致
另外一种方法对参数进行重新编码
7.Spring MVC的主要组件
前端控制器、处理器映射器、处理器适配器、处理器、视图解析器
8.SpringMVC常用注解
@RequestMapping:用于处理请求 url 映射的注解
@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
@Controller
@PathVariable