DispatcherServlet是实现Servlet接口的实现类。
Servlet生命周期由serlvet容器来控制。分为3个阶段:初始化,运行和销毁。
(1)初始化阶段。
Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了servlet的初始化配置信息。
Servlet容器创建一个servlet对象。
Servlet容器调用servlet对象的init进行初始化。
(2)运行阶段。
当Servlet容器接收到一个请求,创建servletRequest和servletResponse对象,然后调用servlet方法。Servlet通过servletRequest对象获取请求信息。处理请求。再通过servletResponse对象请求响应结果。然后销毁servletRequest和servletResponse对象.
(3)销毁阶段。
当web应用终止,servlet容器会先调用servlet对象的destory方法,然后再销毁servlet对象,同时也会销毁ServletConfig对象。
DispatcherServlet的逻辑处理
doService方法调用doDispatch方法
doDispatch函数
1.checkMultipart
如果请求是MultipartContent,则转换为MultipartHttpServletRequest类型的请求。
2.getHandler(HandlerMapping)
根据request信息寻找对应的Handler
(1)lookupHandler:根据路径通过直接匹配或通配符匹配寻找Handler.然后在buildPathExposingHandler函数将Handler封装成HandlerExecutionChain类型。
(2)getHandlerExecutionChain函数将配置中的对应拦截器加入到执行链中,保证这些拦截器可以有效地作用于目标对象。
3.getHandlerAdapter:根据当前的Handler寻找对应的HandlerAdapter.
4.processHandlerException:异常师徒的处理。
5.Render:根据视图跳转页面。