跳到主要内容
版本:7.0.3

处理

Hunyuan 7b 中英对照 Processing

DispatcherServlet 按以下方式处理请求:

  • WebApplicationContext 会在请求中被查找并绑定,作为控制器及流程中其他组件可以使用的属性。默认情况下,它会被绑定在 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 键下。

  • 本地化解析器(locale resolver)会被绑定到请求上,以便流程中的组件在处理请求时能够确定使用哪种本地化设置(如渲染视图、准备数据等)。如果你不需要本地化解析功能,那么就不需要这个解析器。

  • 如果你指定了一个多部分数据解析器(multipart file resolver),请求会会被检查是否包含多部分数据。如果发现有多部分数据,该请求会被封装到一个 MultipartHttpServletRequest 对象中,以便流程中的其他组件进一步处理。有关多部分数据处理的更多信息,请参见 Multipart Resolver

  • 会查找合适的处理器。如果找到了处理器,与之关联的执行链(预处理器、后处理器和控制器)将会被执行,以准备用于渲染的模型数据。或者,对于带有注解的控制器,可以直接在 HandlerAdapter 内部生成响应内容,而无需返回视图。

  • 如果返回了模型数据,那么就会渲染视图。如果没有返回模型数据(可能是由于预处理器或后处理器截取了请求,或者出于安全考虑),则不会渲染视图,因为请求可能已经得到了处理。

WebApplicationContext中声明的HandlerExceptionResolver bean用于解决在请求处理过程中抛出的异常。这些异常解析器允许自定义逻辑来处理异常。有关更多详细信息,请参阅Exceptions

为了支持HTTP缓存,处理器可以使用WebRequestcheckNotModified方法,同时对于带有注释的控制器,还可以使用其他选项,具体说明请参见控制器的HTTP缓存

您可以通过在web.xml文件中的Servlet声明中添加Servlet初始化参数(init-param元素)来自定义各个DispatcherServlet实例。下表列出了支持的参数:

表1. DispatcherServlet初始化参数

参数说明
contextClass实现 ConfigurableWebApplicationContext 的类,由此 Servlet 实例化并进行本地配置。默认使用 XmlWebApplicationContext
contextConfigLocation传递给上下文实例(由 contextClass 指定)的字符串,用于指示上下文的所在位置。该字符串可能包含多个由逗号分隔的子字符串,以支持多个上下文。如果存在多个上下文位置且某些 Bean 被定义了多次,则以最后一个位置的配置为准。

如果在多个上下文位置中都存在同一个 Bean 的定义,那么将使用最近一次定义的配置。
namespaceWebApplicationContext 的命名空间。默认值为 [servlet-name]-servlet

throwExceptionIfNoHandlerFound当请求找不到处理程序时是否抛出 NoHandlerFoundException 异常。该异常可以通过 HandlerExceptionResolver(例如,使用 @ExceptionHandler 控制器方法)进行捕获,并像处理其他异常一样进行处理。

从 Spring MVC 6.1 版本开始,此属性被设置为 true,但现已弃用。

请注意,如果还配置了 默认 Servlet 处理,那么未处理的请求将始终被转发给默认 Servlet,且不会抛出 404 错误。