Spring MVC 流程
SpringMVC 其实就是对 Servlet 的封装,屏蔽掉 Servlet 很多的细节。比如写 Servlet 的时候,要获取参数需要不断的 getParameter,在SpringMVC 方法定义对应的 JavaBean,只要属性名与参数名一致,SpringMVC 就可以帮我们实现「将参数封装到 JavaBean」上了。又比如,以前使用 Servlet「上传文件」,需要处理各种细节,写一大堆处理的逻辑(还得导入对应的jar)。在 SpringMVC 的方法上定义出 MultipartFile 接口,又可以屏蔽掉上传文件的细节了。
Servlet:
SpringMVC:
SpringMVC 请求处理的流程
-
用户发送请求至前端控制器 DispatcherServlet。
-
DispatcherServlet 收到请求调用处理器映射器 HandlerMapping。
-
处理器映射器根据请求 url 找到具体的处理器,生成处理器执行链 HandlerExecutionChain (包括处理器对象和处理器拦截器)一并返回给 DispatcherServlet。
-
DispatcherServlet 根据处理器 Handler 获取处理器适配器 HandlerAdapter 执行 HandlerAdapter 处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作
-
执行处理器 Handler (Controller,也叫页面控制器)。
-
Handler 执行完成返回 ModelAndView。
-
HandlerAdapter 将 Handler 执行结果 ModelAndView 返回到 DispatcherServlet。
- DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器。
-
ViewReslover 解析后返回具体 View。
-
DispatcherServlet 对 View 进行渲染视图(即将模型数据model填充至视图中)。
- DispatcherServlet 响应用户。
参考:
SpringMVC工作原理之适配器[HandlerAdapter]
SpringMVC工作原理之适配器[HandlerAdapter]