对于最新的稳定版本,请使用 Spring Framework 7.0.6!spring-doc.cadn.net.cn

处理

The DispatcherServlet 处理请求如下:spring-doc.cadn.net.cn

  • The WebApplicationContext is 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 the DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE key.spring-doc.cadn.net.cn

  • 本地化解析器绑定到请求,以便处理过程中的元素可以解析要使用的本地(渲染视图、准备数据等)。如果你不需要本地化解析,你就不需要本地化解析器。spring-doc.cadn.net.cn

  • 主题解析器绑定到请求,以便视图等元素可以确定使用哪个主题。如果你不使用主题,可以忽略它。spring-doc.cadn.net.cn

  • 如果您指定了一个multipart文件解析器,请求将被检查是否存在multipart。如果找到multipart,请求将被包装在MultipartHttpServletRequest中,以便由处理过程中的其他元素进行进一步处理。有关multipart处理的更多信息,请参见Multipart Resolverspring-doc.cadn.net.cn

  • 正在搜索合适的处理器。如果找到处理器,将运行与该处理器关联的执行链(预处理器、后处理器和控制器)以准备要渲染的模型。或者,对于注解控制器,可以在HandlerAdapter中直接渲染响应,而不是返回视图。spring-doc.cadn.net.cn

  • 如果返回了模型,则会渲染视图。如果没有返回模型(可能是由于预处理器或后处理器拦截了请求,也许是为了安全原因),则不会渲染视图,因为请求可能已经被满足。spring-doc.cadn.net.cn

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.spring-doc.cadn.net.cn

对于HTTP缓存支持,处理程序可以使用 checkNotModifiedWebRequest 方法, 以及如 控制器的HTTP缓存 所述的带注解的控制器的其他选项。spring-doc.cadn.net.cn

您可以自定义单个DispatcherServlet实例,方法是向web.xml文件中的Servlet声明添加Servlet初始化参数(init-param元素)。下表列出了支持的参数:spring-doc.cadn.net.cn

表 1. DispatcherServlet 初始化参数
参数 说明

contextClassspring-doc.cadn.net.cn

实现 ConfigurableWebApplicationContext 的类,由该 Servlet 实例化并本地配置。默认情况下,使用 XmlWebApplicationContextspring-doc.cadn.net.cn

contextConfigLocationspring-doc.cadn.net.cn

传递给上下文实例(由contextClass指定)的字符串,用于指示上下文的位置。该字符串可能包含多个字符串(使用逗号作为分隔符),以支持多个上下文。在具有多个上下文位置且定义了两次的bean的情况下,最新的位置优先。spring-doc.cadn.net.cn

namespacespring-doc.cadn.net.cn

Namespace of the WebApplicationContext. Defaults to [servlet-name]-servlet.spring-doc.cadn.net.cn

throwExceptionIfNoHandlerFoundspring-doc.cadn.net.cn

是否在未找到请求的处理器时抛出一个NoHandlerFoundException。 然后可以通过HandlerExceptionResolver(例如,通过使用一个@ExceptionHandler控制器方法)捕获该异常,并像处理其他异常一样处理它。spring-doc.cadn.net.cn

默认情况下,这设置为 false,在这种情况下,DispatcherServlet 将响应状态设置为 404 (NOT_FOUND),而不引发异常。spring-doc.cadn.net.cn

请注意,如果也配置了默认Servlet处理,未解析的请求将始终转发到默认Servlet,并且永远不会引发404。spring-doc.cadn.net.cn