springMVC执行流程分析
对于一个springMVC入门案例的执行流程:
1、(客户端)浏览器发送请求到DispatcherServlet前端控制器,
2、DispatcherServlet前端控制器接收到请求后回去找HandlerMapping处理器映射器
3、通过HandlerMapping处理器映射器查找合适(根据request对象)的处理器(也就是controller类)
4、HandlerMapping处理器映射器会给DispatcherServlet前端控制器返回处理器执行链HandlerExecutionChain,在这个执行链里面包含了拦截器HandlerInterceptor和Handler
5、拿到执行链后就会去找HandlerAdapter处理器适配器,这个才是真正区调用controller里面的方法的。(映射器是找controller、适配器是调用controller)
6、HandlerAdapter处理器适配器会去调用Handler(controller),执行处理器里面的方法
8、处理器里面的方法执行完之后会给处理器适配器HandlerAdapter返回ModelAndView对象,再返回给DispatcherServlet前端控制器。
9、DispatcherServlet前端控制器接收到ModelAndView对象会传给ViewResolver视图解析器,进行试图解析(拼接前后缀)
10、ViewResolver视图解析器给DispatcherServlet前端控制器返回View对象
11、将model中的数据填充至view中,渲染视图(controller中会设置后变量名和值,前端可以根据变量名取值,进行渲染),最终响应给客户端
doService方法()
在DispatcherServlet中会有一个doService方法,这里其实是调用了继承父类Servlet的Service方法,在这里面会判断请求方式,根据不同的请求方式执行具体的doService方法,但在父类里面这只是一个抽象方法,具体实现就是DispatcherServlet里面的doService()