Из документа
Веб-приложение может определять любое количество DispatcherServlets.Каждый сервлет будет работать в своем собственном пространстве имен, загружая свой собственный контекст приложения с отображениями, обработчиками и т. Д. Только общий контекст приложения, загруженный ContextLoaderListener, если таковой имеется, будет общим.
Преимущества несколькихдиспетчерские сервлеты ИЛИ Зачем нам нужно несколько диспетчерских сервлетов?
Простой ответ - иметь функциональность DispatcherServlet в нескольких формах
Функциональность сервлет-диспетчера
Я попытаюсь объяснить некоторые из функций, предоставляемых
DispatcherServlet
Объявление нескольких сервлетов диспетчера
Рассмотриму нас есть два сервлета диспетчера (DS), где DS1, DS2 настроены с разными шаблонами URL (**.simple, **.beanName
), и они используют разные конфигурации сервлета диспетчера, представленные ниже.
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: У нас может быть разное HandlerMapping для разного набора URL
DS1 имя бина uКонфигурация сопоставления обработчика rl
<bean name="/hello.beanName" class="com.pvn.mvc.HelloController" />
<bean name="/hi.beanName" class="com.pvn.mvc.HiController" />
Конфигурация сопоставления простого обработчика 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 тайлами, которые являются функциональными возможностями плагина на основе компоновки / скелета, как указано ниже.
Или, если мы используем TilesViewResolver с другим макетом для другого набора URL
анонимный пользователь - другой макет
зарегистрированный пользователь - другой макет
Преимущество 3: У нас может быть другой распознаватель тем для разных наборов URL.
Эти средства распознавания непрерывно отслеживают cookie / сеанс для разрешения темы и служат таблицей стилей / темойквалифицированный (как указано нижеизображение).Ниже приведен только пример для результата CookieThemeResolver .
Примечание. Речь идет не о конфигурации темы, а о конфигурации средства разрешения тем.
Преимущество 4: У нас может быть другой распознаватель локали для различного набора URL.
Этот распознаватель постоянно отслеживает cookie / session / accept-Заголовок для разрешения локали и загрузки квалифицированного сообщения приложения (как показано на рисунке ниже).Ниже приведен только пример для результата CookieLocaleResolver .
Примечание. Речь идет не о конфигурации локали, а о конфигурации распознавателя локали.