1、在 web 项目的 web.xml 文件配置 DispatcherServlet,启动 web 项目完成初始化动作
2、http 请求到 DispatcherServlet
3、根据 HttpServletRequest 查找 HandlerExecutionChain
4、根据 HandlerExecutionChain 获取 HandlerAdapter、执行 handler
5、Handler 执行完成返回 ModelAndView
6、DispatcherServlet 进行结合异常处理ModelAndView
7、DispatcherServlet 进行视图渲染,将 Model 数据在 View 中填充
8、DispatcherServlet 返回结果
源码查看思路
- web.xml 配置DispatcherServlet 是入口
- DispatcherServlet 继承FrameworkServlet 继承HttpServletBean 继承HttpServlet,web项目启动时自动调用HttpServletBean 的 init 方法完成初始化动作
- 当 http 请求过来,是HttpServlet 根据请求类型(get、post、delete…) 执行 doGet、doPost、doDelete 等方法,被FrameworkServlet重写,统一调用FrameworkServlet.processRequest 方法处理请求
- 在FrameworkServlet.processRequest 方法中,调用了DispatcherServlet.doService() 方法,顺着这个方法就可以理清楚 spring mvc 处理 http 请求的整体逻辑