Spring MVC

来源:互联网 发布:java 获取文件路径 编辑:程序博客网 时间:2024/06/09 19:22

1.简单的谈一下SpringMVC的工作流程?

8f046235-4658-4bb2-8569-a45eed6cee73

流程 
1 、用户发送请求至前端控制器 DispatcherServlet 
2 、 DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器。 
3 、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器 ( 如果有则生成 ) 一并返回给 DispatcherServlet 。 
4 、 DispatcherServlet 调用 HandlerAdapter 处理器适配器 
5 、 HandlerAdapter 经过适配调用具体的处理器 (Controller ,也叫后端控制器 ) 。 
6 、 Controller 执行完成返回 ModelAndView 
7 、 HandlerAdapter 将 controller 执行结果 ModelAndView 返回给 DispatcherServlet 
8 、 DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器 
9 、 ViewReslover 解析后返回具体 View 
10 、 DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中)。 
11 、 DispatcherServlet 响应用户

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

在 web.xml 中加入:

 

  1. <filter>
  2.     <filter-name> CharacterEncodingFilter </filter-name>
  3.     <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class>
  4.     <init-param>
  5.         <param-name> encoding </param-name>
  6.         <param-value> utf-8 </param-value>
  7.     </init-param>
  8. </filter>
  9. <filter-mapping>
  10.     <filter-name> CharacterEncodingFilter </filter-name>
  11.     <url-pattern> /* </url-pattern>
  12. </filter-mapping>
以上可以解决 post 请求乱码问题。对于 get 请求中文参数出现乱码解决方法有两个:

修改 tomcat 配置文件添加编码与工程编码一致,如下:

 

  1. < Connector URIEncoding = "utf-8" connectionTimeout = "20000" port = "8080" protocol = "HTTP/1.1" redirectPort = "8443"/>

 

  另外一种方法对参数进行重新编码:

 

  1. String userName = new String ( request . getParamter ( "userName" ). getBytes ( "ISO8859-1" ), "utf-8" )

 

ISO8859-1 是 tomcat 默认编码,需要将 tomcat 编码后的内容按 utf-8 编码

3.SpringMVC与Struts2的主要区别?

① springmvc 的入口是一个 servlet 即前端控制器,而 struts2 入口是一个 filter 过虑器。
② springmvc 是基于方法开发,传递参数是通过方法形参 ,可以设计为单例或多例 ( 建议单例 ) , struts2 是基于类开发,传递参数是通过类的属性 ,只能设计为多例。 
③ Struts 采用值栈存储请求和响应的数据,通过 OGNL 存取数据,   springmvc 通过参数解析器是将 request 对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView 对象,最后又将模型数据通过 request 对象传输到页面。   Jsp 视图解析器默认使用 jstl 。