|
对于最新的稳定版本,请使用 Spring Framework 7.0.6! |
处理
The DispatcherServlet 处理请求如下:
-
The
WebApplicationContextis searched for and bound in the request as an attribute that the controller and other elements in the process can use. It is bound by default under theDispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTEkey. -
本地化解析器绑定到请求,以便处理过程中的元素可以解析要使用的本地(渲染视图、准备数据等)。如果你不需要本地化解析,你就不需要本地化解析器。
-
主题解析器绑定到请求,以便视图等元素可以确定使用哪个主题。如果你不使用主题,可以忽略它。
-
如果您指定了一个multipart文件解析器,请求将被检查是否存在multipart。如果找到multipart,请求将被包装在
MultipartHttpServletRequest中,以便由处理过程中的其他元素进行进一步处理。有关multipart处理的更多信息,请参见Multipart Resolver。 -
正在搜索合适的处理器。如果找到处理器,将运行与该处理器关联的执行链(预处理器、后处理器和控制器)以准备要渲染的模型。或者,对于注解控制器,可以在
HandlerAdapter中直接渲染响应,而不是返回视图。 -
如果返回了模型,则会渲染视图。如果没有返回模型(可能是由于预处理器或后处理器拦截了请求,也许是为了安全原因),则不会渲染视图,因为请求可能已经被满足。
The HandlerExceptionResolver beans declared in the WebApplicationContext are used to
resolve exceptions thrown during request processing. Those exception resolvers allow
customizing the logic to address exceptions. See 异常处理 for more details.
对于HTTP缓存支持,处理程序可以使用 checkNotModified 的 WebRequest 方法,
以及如 控制器的HTTP缓存 所述的带注解的控制器的其他选项。
您可以自定义单个DispatcherServlet实例,方法是向web.xml文件中的Servlet声明添加Servlet初始化参数(init-param元素)。下表列出了支持的参数:
| 参数 | 说明 |
|---|---|
|
实现 |
|
传递给上下文实例(由 |
|
Namespace of the |
|
是否在未找到请求的处理器时抛出一个 默认情况下,这设置为 请注意,如果也配置了默认Servlet处理,未解析的请求将始终转发到默认Servlet,并且永远不会引发404。 |