Processing

Processing

DispatcherServlet 按如下方式处理请求:

  • 在请求中搜索并绑定 WebApplicationContext 作为控制器和进程中的其他元素可以使用的属性。默认情况下,它绑定在 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 键下。

  • 区域设置解析器绑定到请求,让进程中的元素解析在处理请求(呈现视图、准备数据等)时要使用的区域设置。如果不需要区域设置解析,则不需要区域设置解析器。

  • 主题解析器绑定到请求,让视图等元素确定要使用的主题。如果您不使用主题,则可以忽略它。

  • 如果指定多部分文件解析器,则将检查请求中的多部分。如果找到多个部分,则将请求包装在 MultipartHttpServletRequest 中,以便进程中的其他元素进一步处理。有关多部分处理的更多信息,请参阅多部分解析器。

  • 搜索适当的处理程序。如果找到处理程序,则运行与处理程序关联的执行链(预处理器、后处理器和控制器),以准备用于渲染的模型。或者,对于带注释的控制器,可以呈现响应(在 HandlerAdapter 内),而不是返回视图。

  • 如果返回模型,则呈现视图。如果未返回任何模型(可能是由于预处理器或后处理器拦截了请求,可能是出于安全原因),则不会呈现任何视图,因为请求可能已经得到满足。

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

对于 HTTP 缓存支持,处理程序可以使用 WebRequest 的 checkNotModified 方法,以及用于带注释的控制器的更多选项,如控制器的 HTTP 缓存中所述。

您可以通过将 Servlet 初始化参数(init-param 元素)添加到 web.xml 文件中的 Servlet 声明来定制各个 DispatcherServlet 实例。支持的参数如下表所示:
在这里插入图片描述

表 1.DispatcherServlet 初始化参数

Parameter(参数)Explanation (解释)
contextClass(上下文类)实现 ConfigurableWebApplicationContext 的类,由此 Servlet 实例化和本地配置。默认情况下,使用 XmlWebApplicationContext。
contextConfigLocation传递给上下文实例(由 contextClass 指定)的字符串,用于指示可以找到上下文的位置。该字符串可能由多个字符串(使用逗号作为分隔符)组成,以支持多个上下文。如果存在多个上下文位置,并且 Bean 定义了两次,则最新的位置优先。
namespaceWebApplicationContext 的 Namespace。默认为 [servlet-name]-servlet。
throwExceptionIfNoHandlerFound是否在未找到请求的处理程序时引发 NoHandlerFoundException。然后,可以使用 HandlerExceptionResolver(例如,通过使用 @ExceptionHandler 控制器方法)捕获异常,并像处理任何其他异常一样进行处理。从 6.1 开始,此属性设置为 true 并已弃用。请注意,如果还配置了默认 Servlet 处理,则未解析的请求将始终转发到默认 Servlet,并且永远不会引发 404。
  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值