SpringMVC框架

SpringMVC运行原理

  1. 用户向服务器发送请求,请求被Spring 前端控制DispatcherServlet的doDispatcher捕获;
  2. HandlerMapping(请求路径和控制器方法的对应关系,如(”/user/list” UserController.list()))根据请求获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回(请求的方法,参数等封装起来);
  3. DispatcherServlet 根据获得的Handler(控制器方法),选择一个合适的HandlerAdapter。(附注:如果成功获HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)
  4. 通过HandlerAdapter提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作,如数据转换(前台传递的字符串/user?name=liuxing&age=40&birthday=2019-01-17转成对应的类型)、数据校验等。
  5. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象
  6. 通过HandlerAdapter调用所有拦截器的postHandle方法
  7. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
  8. ViewResolver 结合Model和View,来渲染视图
  9. 通过HandlerAdapter调用所有拦截器的afterCompletion方法
  10. 将渲染结果返回给客户端。
  11. 注意:其实这里说的Handler就是Controller
    SpringMVC框架