1,客户端发送请求到这个DispatcherServlet前端控制器
为什么要有DispatcherServlet这个东西 一是解耦 二是因为tomcat无法直接访问到我们的后端资源
2,前端控制器会通过这个HandlerMapping处理器映射器,找到合适的处理器,就是通过这个输入的url,找到对应的handler
3,返回处理器的执行链,里面会包含多个拦截器的信息,以及需要查找的处理器handler的信息 (利用反射将信息保存在处理器执行链 HandlerExecutionChain)
利用反射动态获取拦截器处理器的信息 然后通过反射存储在HandlerExecutionChain中
4,找处理器适配器HandlerAdapter,这一步开始就会去调用handler里面的方法
5,通过执行这个handler里面的方法,会去找具体的controller方法
从这开始就要分为异步或者同步了
如果是同步请求从5开始 就执行下面
6,找到具体的controller之后,会返回一个modelAndView给这个HanderAdapter给处理器适配器
7,处理器适配器获取到ModelAndView之后,会将这个结果返回给DispatcherServlet前端控制器
8,通过这个ViewResolver视图解析器进行解析这个ModelAndView
9,解析完成之后,会将这个view返回给前端DispatcherServlet前端控制器
10,将model中的数据填充到这个view视图里面,最后去渲染视图
如果是异步请求的话 从5开始
处理完了之后就返回json字符串 到前端控制器 前端控制器就直接返回给客户端了 不需要视图解析视图渲染