DispatcherServlet Processing Sequence

当你设置了DispatcherServlet,当请求进来的时候,就会给指定的DispatcherServlet处理,那么DispatcherServlet就会开始一系列的请求处理流程:

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值