|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
处理
DispatcherServlet 按如下方式处理请求:
-
WebApplicationContext会被查找并在请求中作为属性进行绑定,以便控制器和处理流程中的其他组件可以使用。默认情况下,它会以DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE键进行绑定。 -
区域设置解析器绑定到请求,以便在处理请求(渲染视图、准备数据等)过程中,相关元素能够解析出要使用的区域设置。如果您不需要区域设置解析功能,则无需使用区域设置解析器。
-
主题解析器绑定到请求上,以便视图等元素能够确定使用哪个主题。如果您不使用主题,可以忽略它。
-
如果你指定了一个多部分文件解析器(multipart file resolver),请求将被检查是否包含多部分内容(multiparts)。如果发现多部分内容,该请求会被包装成一个
MultipartHttpServletRequest,以便流程中的其他组件进行进一步处理。有关多部分处理的更多信息,请参见Multipart Resolver。 -
系统会搜索一个合适的处理器。如果找到处理器,则会执行与该处理器关联的执行链(包括预处理器、后处理器和控制器),以准备用于渲染的模型。或者,对于带注解的控制器,可以在
HandlerAdapter中直接渲染响应,而不是返回一个视图。 -
如果返回了一个模型,则会渲染视图。如果没有返回模型(可能是由于预处理器或后处理器出于安全等原因拦截了请求),则不会渲染视图,因为该请求可能已经被处理完成。
在 HandlerExceptionResolver 中声明的 WebApplicationContext Bean 用于
解析请求处理过程中抛出的异常。这些异常解析器允许
自定义处理异常的逻辑。更多详情请参见异常。
为了支持 HTTP 缓存,处理器可以使用 checkNotModified 的 WebRequest 方法,
以及针对带注解控制器的更多选项,详见
控制器的 HTTP 缓存。
您可以通过在 DispatcherServlet 文件中的 Servlet 声明里添加 Servlet 初始化参数(init-param 元素)来定制各个 web.xml 实例。下表列出了所支持的参数:
| 参数 | 说明 |
|---|---|
|
实现 |
|
传递给上下文实例(由 |
|
|
|
当请求找不到处理器时,是否抛出 默认情况下,此值设置为 请注意,如果同时配置了默认 Servlet 处理, 则所有无法解析的请求都会被转发到默认 Servlet,而永远不会抛出 404 错误。 |