25

今まで私は、Webアプリケーションはdispatcher-servlet私たちが定義したものだけを持つことができると思っていましたweb.xml

  • 私はそう考えるのが正しいですか?
  • 1つのWebアプリケーションに複数のディスパッチャサーブレットを含めることはできますか?はいの場合、どのように?
  • これが必要になる可能性がある状況は何ですか?
  • Webアプリケーション全体に単一のアプリケーションコンテキストしか存在できませんか?
  • 複数のアプリケーションコンテキストをどのように定義できますか?
  • dispatcher-servlet春以外のアプリケーションに存在できますか?
4

2 に答える 2

30

1つのWebアプリケーションに複数のディスパッチャサーブレットを含めることはできますか?

もちろん、公式ドキュメントを引用します(太字も実際にあります!)

Webアプリケーションは、任意の数のDispatcherServletを定義できます。各サーブレットは独自の名前空間で動作し、マッピングやハンドラーなどを使用して独自のアプリケーションコンテキストをロードします。ContextLoaderListenerによってロードされたルートアプリケーションコンテキストのみが共有されます。


どのように?

org.springframework.web.servlet.DispatcherServlet異なる名前でクラスを使用していくつかのサーブレットを宣言するだけです。また、yourServletName-servlet.xmlファイルが利用可能であることを確認してください。


これが必要になる可能性がある状況は何ですか?

DispatcherServlet非常に柔軟です。Spring MVCだけでなく、Spring WS、のSpringサポートなども使用します。


また、Webアプリケーション全体に単一のアプリケーションコンテキストしか存在できませんか?

引用されたドキュメントでもすでに回答されています:1つのアプリケーションコンテキストDispatcherServlet+1つのメインWebアプリケーションコンテキスト。


複数のアプリケーションコンテキストをどのように定義できますか?

上記を参照してください。複数のを作成するだけDispatcherServletです。


ディスパッチャサーブレットは、Spring以外のアプリケーションに存在できますか?

DispatcherServletはそれ自体がSpringコンテキスト(Springアプリケーション)であるため、次のようになります。一方、DispatcherServlet親(メイン)アプリケーションコンテキストを持たないアプリケーションで宣言できるため、次のようになります。はい。

于 2012-08-21T16:56:28.913 に答える
1

これが必要になる可能性がある状況は何ですか?

または
複数のディスパッチャサーブレットの利点または複数のディスパッチャサーブレット
必要な理由

簡単な答えは、DispatcherServletの機能をいくつかの形式で持つことです

ディスパッチャサーブレット機能



によって提供される機能のいくつかを説明しようとしますDispatcherServlet

複数のディスパッチャーサーブレットの宣言
DS1、DS2が異なるURLパターン(**.simple, **.beanName)で構成され、以下に示すように提供される異なるディスパッチャーサーブレット構成を使用する2つのディスパッチャーサーブレット(DS)があるとします。

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を使用できます

DS1Bean名の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のInternalResourceViewResolverprefix + returned String + suffix
TilesViewResolver for DS2
の実装は、以下に示すレイアウト/スケルトンベースのプラグインの高レベル機能であるapacheタイルによって提供されます。 または、URLの匿名ユーザー
ここに画像の説明を入力してください のセットごとに異なるレイアウトでTilesViewResolverを使用する場合( ログインしているユーザーごとに異なるレイアウト)、異なるレイアウト


利点3: URLのセットごとに異なるテーマリゾルバーを使用できます。
これらのリゾルバーは、Cookie /セッションを継続的に監視してテーマを解決し、スタイルシート/テーマの資格を提供します(下の画像を参照)。以下に、CookieThemeResolverます。
注:これはテーマの構成ではなく、テーマリゾルバーの構成に関するものです。

ここに画像の説明を入力してください

利点4: URLのセットごとに異なるロケールリゾルバーを使用できます。
これらのリゾルバーは、cookie / session / accept-headerを継続的に監視してロケールを解決し、修飾されたアプリケーションメッセージをロードします(下の画像を参照)。以下に、CookieLocaleResolverます。
注:これはロケール構成に関するものではなく、ロケールリゾルバー構成に関するものです。
ここに画像の説明を入力してください

于 2019-09-29T22:38:41.697 に答える