在什么情况下我们可能需要这个?
或
多个调度程序 servlet 的优点 OR
为什么我们需要多个调度器 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设置不同的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 tile 提供,这是一个基于布局/骨架的插件高级功能,如下所示。
或者,如果我们为不同的 URL 集使用具有不同布局的 TilesViewResolver
匿名用户 - 不同的布局
登录用户 - 不同的布局
优势 3: 我们可以为不同的 URL 设置不同的主题解析器。
这些解析器持续监控 cookie/会话以解析主题并提供样式表/主题合格(如下图所示)。下面仅给出CookieThemeResolver 的结果示例。
注意:这不是关于主题配置,而是关于主题解析器配置。
优势 4: 我们可以为不同的 URL 集使用不同的语言环境解析器。
这些解析器持续监控 cookie/session/accept-header 以解析语言环境并加载合格的应用程序消息(如下图所示)。下面仅给出CookieLocaleResolver 的结果示例。
注意:这不是关于语言环境配置,而是关于语言环境解析器配置。