为了账号安全,请及时绑定邮箱和手机立即绑定

在 spring mvc 中使用多个调度程序 servlet 的优点和缺点

在 spring mvc 中使用多个调度程序 servlet 的优点和缺点

墨色风雨 2023-09-06 15:42:58
我刚刚发现在一个 Spring 应用程序中可以有多个。 dispatcher-servlets我想知道采用这种方法是否有任何优势,而不是传统的弹簧方法对所有传入请求进行单一处理。 dispatcher-servlet
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

来自医生

Web 应用程序可以定义任意数量的 DispatcherServlet。每个 servlet 将在自己的命名空间中运行,加载自己的应用程序上下文以及映射、处理程序等。只有由 ContextLoaderListener 加载的根应用程序上下文(如果有)才会被共享。

多个调度程序 servlet 的优点或者为什么我们需要多个调度程序 servlet?

简单的答案是以多种形式拥有DispatcherServlet 的功能

调度程序 servlet 功能


  • Dispatcher Servlet 使用HandlerMapping实现来控制将请求路由到处理程序对象。默认为BeanNameUrlHandlerMapping和RequestMappingHandlerMapping。

  • 它的视图解析策略可以通过ViewResolver实现来指定,将符号视图名称解析为 View 对象。默认为InternalResourceViewResolver。

  • 它的异常解决策略可以通过HandlerExceptionResolver指定,例如将某些异常映射到错误页面。

  • 它解决多部分请求的策略由MultipartResolver实现决定。

  • 它的区域设置解析策略由LocaleResolver确定。

  • 它的主题解析策略由ThemeResolver决定。



我将尝试解释 提供的一些功能DispatcherServlet


声明多个调度程序 servlet
考虑我们有两个调度程序 servlet(DS),其中 DS1、DS2 配置有不同的 url 模式 ( **.simple, **.beanName),并且它们使用不同的调度程序 servlet 配置,如下所示。

DispatcherServlet     - simpleUrlHandlerDispatcherServlet

contextConfigLocation - /WEB-INF/simpleUrlHandlerMapping.xml

<url-pattern>*.simple</url-pattern>


DispatcherServlet     - beanNameUrlHandlerDispatcherServlet

contextConfigLocation - /WEB-INF/beanNameUrlHandlerMapping.xml

<url-pattern>*.beanName</url-pattern>

优点 1:我们可以针对不同的 URL 集使用不同的 HandlerMapping


DS1 bean 名称 url 处理程序映射配置


<bean name="/hello.beanName" class="com.pvn.mvc.HelloController" />

<bean name="/hi.beanName" class="com.pvn.mvc.HiController" />

DS2 简单 url 处理程序映射配置


<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

    <property name="mappings">

        <props>

            <prop key="/hello.simple">simpleHello</prop>

            <prop key="/hi.simple">simpleHi</prop>

        </props>

    </property>

</bean>

优点 2:我们可以为不同的 URL 集使用不同的视图解析器。


DS1 的InternalResourceViewResolver

仅处理prefix + returned String + suffix. DS2 的

TilesViewResolver

其实现由 apachetiles 提供,这是一个基于布局/骨架的插件高级功能,如下所示。

https://img1.sycdn.imooc.com/64f82dc300011a6e05330307.jpg

或者,如果我们对不同的 URL
匿名用户集使用具有不同布局的 TilesViewResolver -
登录用户的不同布局 - 不同的布局

优点 3:我们可以为不同的 URL 集使用不同的主题解析器。
这些解析器持续监视 cookie/会话来解析主题并提供合格的样式表/主题(如下图所示)。下面给出了CookieThemeResolver的结果的示例。
注意:这不是关于主题配置,而是关于主题解析器配置。

https://img2.sycdn.imooc.com/64f82dd00001fbd206560416.jpg

优点 4:我们可以为不同的 URL 集使用不同的区域设置解析器。
这些解析器持续监视 cookie/session/accept-header 以解析区域设置并加载合格的应用程序消息(如下图所示)。下面给出了CookieLocaleResolver的结果的示例。
注意:这不是关于区域设置配置,而是关于区域设置解析器配置。

https://img1.sycdn.imooc.com/64f82ddd0001152206530289.jpg

查看完整回答
反对 回复 2023-09-06
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信