springmvc中使用多个dispatcher servlet的优缺点

Advantages and disadvantages of using multiple dispatcher servlets in spring mvc

我刚刚发现您可以在 spring 应用程序中有 多个 dispatcher-servlets。我想知道采用这种方法是否比传统的 spring 方法有任何优势,对所有传入请求使用 单个 dispatcher-servlet

来自文档

A web application can define any number of DispatcherServlets. Each servlet will operate in its own namespace, loading its own application context with mappings, handlers, etc. Only the root application context as loaded by ContextLoaderListener, if any, will be shared.

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

简单的答案是以多种形式具有 DispatcherServlet's 功能

调度程序 servlet 功能



我将尝试解释 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>

优势一: 我们可以针对不同的集合URL[=117设置不同的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 集合使用不同的视图解析器.

InternalResourceViewResolver 用于 DS1
它只处理 prefix + returned String + suffix.
TilesViewResolver DS2
它的实现由 apache tiles 提供,它是一个基于 layout/skeleton 的插件高级功能,如下所示。
或者,如果我们对 URL 的
的不同集合使用具有不同布局的 TilesViewResolver 匿名用户 - 不同的布局
登录用户 - 不同布局

优点3: 我们可以为不同的URL组设置不同的主题解析器.
这些解析器持续监控 cookie/session 以解析主题并提供 stylesheet/theme 合格的服务(如下图所示)。下面给出了 CookieThemeResolver.
结果的示例 注意:这不是关于主题配置,而是关于主题解析器配置。

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