标签:std src image 加载 dad 流程 isp eric 实现类
---恢复内容开始---
在使用spring MVC的时候一般都需要在web.xml中配置请求分发
所以我们大致清楚DispatcherServlet是spring MVC的核心类,也可以看出需要运行在Servlet容器中。
GenericServlet 实现了Servlet接口,为所有请求的模板。
一般我们使用tomcat作为Servlet容器,那么看一下tomcat是如何处理请求的
可以看出tomcat是在过滤器链中调用ApplicationFilterChain的internalDoFilter来发起一个请求调用的。
1、调用HttpServlet 的 service
2、调用FrameworkServlet的service - doGet - processRequest
3、调用DispatcherServlet的 doService - doDispatch
4、获取methodAdpter
5、调用methodAdpter的handle方法(反射调用Controller的方法)
这大致是一个请求如何从Servlet容器到业务本身实现类的过程。
具体的分发和业务处理大部分都在DispatcherServlet 中实现:
在doService中设置请求属性,包含FlashMap(重定向使用),上下文
在doDispatch中 1、检查请求是否有multipart,如果有则要包装一次请求,请求结束也会清理multipart资源
2、获取Handler链
3、获取handler的Adapter
4、拦截器pre处理
5、handler处理,得到ModelAndView
6、拦截器post处理
7、将ModelAndView或Exception都处理成ModelAndView,然后reander(参考配置的ViewResolver的处理)
8、ModelView根据request的RequestDispatcher(Servlet容器实现)来实现响应处理,输出页面。
大致请求与分发的流程就是这样,后面记录一下Bean的加载、注入和参数绑定
标签:std src image 加载 dad 流程 isp eric 实现类
原文地址:https://www.cnblogs.com/souyoulang/p/8758867.html