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