1、客户端请求提交到DispatcherServlet(前端过滤器)
2、由DispatcherServlet控制器查询一个或多个HandlerMapping(映射处理器),通过xml文件找到处理请求的Controller
3、DispatcherServlet将请求提交到Controller
4、Controller调用业务逻辑处理后,返回ModelAndView
5、DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6、视图负责将结果显示到客户端
另一种:
1、用户向服务器发送请求,请求被前端控制器DispatcherServet截获
2、DispatcherServlet没有业务处理的能力,调用HandlerMapping处理器映射器
3、HandlerMapping根据xml配置和注解找到具体的Handler,并将处理器执行链(包括Handler和拦截器数组)返回给DispatcherServlet
4、DispatcherServlet调用HandlerAdapter处理器适配器
5、HandlerAdapter经过适配器调用具体的处理器(Controller,也称后端控制器)
6、Controller调用业务逻辑执行完返回ModleAndView
7、HandlerAdapter将ModleAndView返回给DispatcherServlet
8、DispatcherServlet将ModleAndView传给ViewReslover视图解析器
9、ViewReslover解析后返回具体的View
10、Dispatcher根据View进行视图渲染(将Modle填充至View)
11、DispatcherServlet响应用户
2、Struts2 原理
3、SpringMVC、Struts2区别
Struts2 | SpringMVC |
基于一个filter,StrutsPrepareAndExecuterFilter | 基于一个servlet,DispatcherServlet |
基于类的开发,成员变量收参,多例 | 基于类中方法的开发,形参收参,可单例(默认),可多例 |
值栈存取请求及相应数据,通过OGNL存取数据 | request来解析请求内容,并给方法形参赋值,后台处理的数据通过ModelAndView对象存储 |
4、SpringMVC常用注解
@RequestMapping 用于请求URL映射
@RequestBody 接受http请求的json数据,将json数据转换为Java对象
@ResponseBody 将controller方法返回对象转化成json响应给客户
5、如何解决get和post乱码问题
解决post 请求乱码:我们可以在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器。 设置为 utf-8.
解决get 请求的乱码:有两种方法。对于 get 请求中文参数出现乱码解决方法有两个:
1. 修改tomcat 配置文件添加编码与工程编码一致。
2.另外一种方法对参数进行重新编码
String userName = New String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “utf-8”);