SpringMVC是一个控制层的MVC框架,核心是一个Servlet,也就是和JSF一样面向方法级的MVC框架。核心的DispatcherServlet是一个单例的,所以线程不安全。解决线程不安全的方案是在controller里面不能写字段。
执行流程
用户发送一个请求到核心控制器DispatcherServlet,DispatcherServlet收到请求后会调用HandlerMapping处理器映射器找到对应的处理器,生成一个处理器对象返回给核心控制器DispatcherServlet,核心控制器DispatcherServlet再调用HandlerAdapter处理器适配器适配到具体的处理器Controller也就是后端的控制器,controller执行完成之后返回ModelAndView,HandlerAdapter处理器适配器将ModelAndView返回给核心控制器DispatcherServlet,然后核心控制器DispatcherServlet将ModelAndView传给ViewReslover试图解析器,视图解析器返回具体的View。DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)相应给客户。
面试怎么说。
SpringMVC的核心控制器就是一个DispatcherServlet,主要功能有两个,
- 1、找到对应的controller,
- 2、将模型数据填充值视图中相应给客户
流程
- 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响应用户。