处理
DispatcherServlet 按以下方式处理请求:
-
WebApplicationContext被查找并作为属性绑定到请求中,以便控制器和处理过程中的其他元素可以使用它。默认情况下,它绑定在DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE键下。 -
区域设置解析器绑定到请求中,以便处理过程中的元素可以解析在处理请求时(渲染视图、准备数据等)使用的区域设置。如果您不需要区域设置解析,则不需要区域设置解析器。
-
如果指定了多部分文件解析器,则会检查请求是否存在多部分。如果找到多部分,请求将被包装在
MultipartHttpServletRequest中,以供处理过程中的其他元素进一步处理。有关多部分处理的更多信息,请参阅 多部分解析器。 -
搜索适当的处理程序。如果找到处理程序,则运行与处理程序关联的执行链(预处理器、后处理器和控制器),以准备用于渲染的模型。或者,对于注解控制器,可以在
HandlerAdapter中渲染响应,而不是返回视图。 -
如果返回模型,则渲染视图。如果未返回模型(可能是由于预处理器或后处理器拦截了请求,可能是出于安全原因),则不渲染视图,因为请求可能已经完成。
WebApplicationContext 中声明的 HandlerExceptionResolver bean 用于解决请求处理期间抛出的异常。这些异常解析器允许自定义处理异常的逻辑。有关更多详细信息,请参阅 异常。
对于 HTTP 缓存支持,处理程序可以使用 WebRequest 的 checkNotModified 方法,以及 控制器的 HTTP 缓存 中描述的注解控制器的其他选项。
您可以通过将 Servlet 初始化参数 (init-param 元素) 添加到 web.xml 文件中的 Servlet 声明中来定制各个 DispatcherServlet 实例。下表列出了支持的参数:
| 参数 | 解释 |
|---|---|
|
实现 |
|
传递给上下文实例(由 |
|
|
|
当未找到请求的处理程序时是否抛出 从 6.1 开始,此属性设置为 请注意,如果 默认 Servlet 处理 也已配置,则未解析的请求始终转发到默认 Servlet,并且永远不会引发 404。 |