1. 当前的DispatcherServlet所属的那个WebApplicationContext会被找到,并且会作为一个属性绑定到当前的这个request里面,以至于后面的控制器以及其他的一些元素可以访问到,所绑定的key是DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE。
2. locale resolver会被绑定到当前的request上,以至于在后续的处理中(例如视图渲染,处理数据等)可以本地化,如果你不需要本地化解析,那么你可以不需要它。
3. theme resolver会被绑定到当前的request上,以至于让后面的元素知道实现什么主题,如果你不使用主题,你可以忽略它。
4. 如果你指定了multipart file resolver,当前请求会被组成multiparts,如果multiparts被找到了,那么当前的request会被包装成MultipartHttpServletRequest去处理在这个流程中的其他元素。
5. 去寻找一个合适的处理器,如果处理器被找到了,那么与处理器相关的一条执行链(preprocessors, postprocessors, and controllers)就会被执行,为了去准备model的数据和视图的渲染。
6. 如果一个model返回的话,那么一个视图就会被渲染。如果没有model返回的话(may be due to a preprocessor or postprocessor intercepting the request, perhaps for security reasons 可能是因为前置或者后置处理器拦截了这个请求,或许是出于安全因素的考虑),那么就不会有视图被渲染。
Handler exception resolvers是声明在WebApplicationContext的 ,它的目的就是为了拾取当前request处理过程中抛出来的异常。使用这些异常解析器,允许你自定义一些行为去处理这些异常。
DispatcherServlet也支持last-modification-date,这个是在Servlet API中特定的。为了去确定处理过程中的 last modification date,DispatcherServlet 会去寻找合适的处理器映射器,会去探测当前的这个处理器是否实现了LastModified接口,如果实现了,那么long getLastModified(request)这个方法就会返回给客户端。
你可以自定义DispatcherServlet的初始化参数,就是通过在web.xml文件中添加一些init-param参数,请看下面的支持的参数列表:
1. contextClass: 一个实现了WebApplicationContext的类,它是被Servlet使用的context,默认情况下是XmlWebApplicationContext。
2. contextConfigLocation: 指明context的配置文件。
3. namespace: WebApplicationContext的命名空间,默认情况下是[servlet-name]-servlet。