一.SpringMVC流程:
1.用户发送请求至前端控制器DispatherServlet
2.前端控制器DispatherServlet查找处理器映射器HandlerMapping
3.处理器映射器HandlerMapping将对应的处理器配置和拦截器配置返回给前端控制器DispatherServlet
4.前端控制器DispatherServlet请求相应的处理器适配器HandlerAdapt
5.处理器适配器HandlerAdapt经过处理器Handler适配,找到具体的处理器Controller
6.Controller执行完成返回模型和视图ModelAndView给处理器适配器HandlerAdapt
7.处理器适配器HandlerAdapt将模型和视图ModelAndView返回给前端控制器DispatherServlet
8.前端控制器DispatherServlet将ModelAndView传给视图解析器ViewResolver
9.视图解析器ViewResolver将ModelAndView解析后返回具体View
10.DispatherServlet根据View进行渲染视图(即将模型数据填充至视图中)
11.DispatherServlet响应用户
二.如何解决post请求中文乱码问题,get的有如何处理?
在web.xml中加入:
CharacterEncodingFilter过滤器
具体代码如下:
get请求中文乱码的解决方法有两种:
1.修改tomcat配置文件添加编码与工程编码一致,如下:
在eclipse工程中的servers中的server.xml中,修改如下位置:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
2.对参数进行重新编码:
String userName = new String(request.getParameter("userName").getBytes("ISO8859-1"),"utf-8");
三.SpringMVC与Struts2的主要区别
1.springMVC的入口是servlet即前端控制器,而struts2入口是一个filter过滤器
2.springMVC是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例
3.struts采用值栈存储请求和响应的数据,通过OGNL存储数据,springMVC通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,
最后又将模型数据通过request对象传输到页面。JSP视图解析器默认使用jstl
4.struts2有漏洞,springMVC目前还没有漏洞出现,如果使用struts2,建议下载最新包
1.用户发送请求至前端控制器DispatherServlet
2.前端控制器DispatherServlet查找处理器映射器HandlerMapping
3.处理器映射器HandlerMapping将对应的处理器配置和拦截器配置返回给前端控制器DispatherServlet
4.前端控制器DispatherServlet请求相应的处理器适配器HandlerAdapt
5.处理器适配器HandlerAdapt经过处理器Handler适配,找到具体的处理器Controller
6.Controller执行完成返回模型和视图ModelAndView给处理器适配器HandlerAdapt
7.处理器适配器HandlerAdapt将模型和视图ModelAndView返回给前端控制器DispatherServlet
8.前端控制器DispatherServlet将ModelAndView传给视图解析器ViewResolver
9.视图解析器ViewResolver将ModelAndView解析后返回具体View
10.DispatherServlet根据View进行渲染视图(即将模型数据填充至视图中)
11.DispatherServlet响应用户
二.如何解决post请求中文乱码问题,get的有如何处理?
在web.xml中加入:
CharacterEncodingFilter过滤器
具体代码如下:
get请求中文乱码的解决方法有两种:
1.修改tomcat配置文件添加编码与工程编码一致,如下:
在eclipse工程中的servers中的server.xml中,修改如下位置:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
2.对参数进行重新编码:
String userName = new String(request.getParameter("userName").getBytes("ISO8859-1"),"utf-8");
三.SpringMVC与Struts2的主要区别
1.springMVC的入口是servlet即前端控制器,而struts2入口是一个filter过滤器
2.springMVC是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例
3.struts采用值栈存储请求和响应的数据,通过OGNL存储数据,springMVC通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,
最后又将模型数据通过request对象传输到页面。JSP视图解析器默认使用jstl
4.struts2有漏洞,springMVC目前还没有漏洞出现,如果使用struts2,建议下载最新包