Spring MVC是Spring Web MVC的简称,是一款和struts2媲美的控制层框架,是Spring家族的成员,能与Spring框架无缝整合在一起。
一、Spring MVC的执行流程简图:
二、Spring MVC的架构:
三、Spring MVC的架构执行流程:
- 用户发送请求至前端控制器DispatcherServlet
- DispatcherServlet收到请求调用HandlerMapping处理器映射器。
- 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
- 执行处理器(Controller,也叫后端控制器)。
- Controller执行完成返回ModelAndView
- HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
- DispatcherServlet将ModelAndView传给ViewReslover视图解析器
- ViewReslover解析后返回具体View
- DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
- DispatcherServlet响应用户
四、Spring MVC与Struts2的不同:
1、springmvc的程序入口为前端控制器,即一个servlet,而struts2是基于filter过滤器的
2、springmvc对路径进行精准地导航并且回显,控制器中的每一个方法代表着一个请求,而struts2是基于struts.xml配置文件的配置而导航
3、springmvc默认采用的是单例模式,而struts2需要采用多例模式(详情参考:为什么struts2一定要多例)
4、springmvc接受的参数是形参,无需定义成员变量,而struts2需要定义成员变量来接受
5、springmvc采用的是参数解析器解析request域中的数据,最后再通过ModelAndView对象将数据存放到request域中。而struts2采用的是值栈