SpringMVC请求流程
SpringMVC请求流程
1. 流程步骤
客户端请求被DispatcherServlet接收。
DispatcherServlet将请求映射到Handler。
生成Handler以及HandlerInterceptor。
返回HandlerExecutionChain(Handler + HandlerInterceptor)。
DispatcherServlet通过HandlerAdapter执行Handler。
返回一个ModelAndView。
DispatcherServlet通过ViewResolver进行解析。
返回填充了模型数据的View,响应给客户端。
2. 流程说明
-
客户端发送url请求,前端控制器(DispatcherServlet)接收到这个请求然后转发给处理器映射器(HandlerMapping)。
-
处理器映射器会对url请求进行分析,找到对应的后端控制器(Handler),并且生成处理器对象及处理器拦截器(形成一条执行链HandlerInterceptor)返回给前端控制器。
-
根据处理器映射器返回的后端控制器(Handler)的名称/索引, 前端控制器会找合适的处理器适配器( HandlerAdapter )
-
处理器适配器会去执行后端控制器(Handler在开发的时候会被叫成Controller)。补充:执行之前会有转换器、数据绑定、校验器等等操作。完成上面这些才会去执行后端控制器。
-
后端控制器Handler执行完成之后返回一个 ModelAndView 对象, Model 是返回的数据对象,View 是个逻辑上的 View。
-
处理器适配器会将这个 ModelAndView 返回前端控制器。前端控制器会将 ModelAndView 对象交给合适的视图解析器 ViewResolver 。
-
视图解析器(ViewResolver)解析 ModelAndView 对象,返回 视图对象(view)。
-
前端控制器请求视图对视图对象(View)进行渲染(数据填充)之后返回并响应给浏览器/客户端。