配置好DispatcherServlet
以后,开始有请求会经过这个DispatcherServlet
。此时,DispatcherServlet
会依照以下的次序对请求进行处理:
WebApplicationContext
并把它作为一个属性(attribute)绑定到该请求上,以便控制器和其他组件能够使用它。属性的键名默认为DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE
MultipartHttpServletRequest
对象,以便处理链中的其他组件对它做进一步的处理。关于Spring对multipart文件传输处理的支持,读者可以参考21.10 Spring的multipart(文件上传)支持一小节如果在处理请求的过程中抛出了异常,那么上下文WebApplicationContext
对象中所定义的异常处理器将会负责捕获这些异常。通过配置你自己的异常处理器,你可以定制自己处理异常的方式。
Spring的DispatcherServlet
也允许处理器返回一个Servlet API规范中定义的 最后修改时间戳(last-modification-date) 值。决定请求最后修改时间的方式很直接:DispatcherServlet
会先查找合适的处理器映射来找到请求对应的处理器,然后检测它是否实现了 LastModified 接口。若是,则调用接口的long getLastModified(request)
方法,并将该返回值返回给客户端。
你可以定制DispatcherServlet
的配置,具体的做法,是在web.xml
文件中,Servlet的声明元素上添加一些Servlet的初始化参数(通过init-param
元素)。该元素可选的参数列表如下:
可选参数 | 解释 |
---|---|
contextClass |
任意实现了WebApplicationContext 接口的类。这个类会初始化该servlet所需要用到的上下文对象。默认情况下,框架会使用一个XmlWebApplicationContext 对象。 |
contextConfigLocation |
一个指定了上下文配置文件路径的字符串,该值会被传入给contextClass 所指定的上下文实例对象。该字符串内可以包含多个字符串,字符串之间以逗号分隔,以此支持你进行多个上下文的配置。在多个上下文中重复定义的bean,以最后加载的bean定义为准 |
namespace |
WebApplicationContext 的命名空间。默认是[servlet-name]-servlet |