2012-05-11 5 views
3

私は昨日Spring MVCを学び始めました。そして、私はSpring MVC(または他のフレームワークかもしれない)で、1つのWebアプリケーションで多くのサーブレットを持つことができると考えています。
サーブレットには、httpリクエストがある場合に一致するurlパターンがあります。一方、@RequestMappingを使用してHTTPリクエストのマッピングを行うことができます。
なぜ、どのような場合に複数のサーブレットを使用すべきかという疑問がありますか?
そのためのベストプラクティスは何ですか?

ありがとうございます。なぜ、どのような場合には、spring mvcではシングルサーブレットの代わりに複数のサーブレットを使用する必要がありますか?

答えて

2

は通常、Spring MVCのでは、次のようにweb.xml内の単一のサーブレットを宣言:

<servlet> 
    <servlet-name>ActivityReplicator</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>ActivityReplicator</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

このサーブレットは、アプリケーションにすべてのリクエストを処理するために、右のコントローラーにそれらをディスパッチする責任を負うことになります。

単一のサーブレットを使用すると、web.xmlで実行する必要がある設定が制限されます。 Spring Controllerは、DispatcherServletからのリダイレクションを処理するために特別に構築されています。 Nathanが説明したように、コントローラーの構成はあまり複雑ではありません。

あなたのアプリケーションで見つかったすべてのドメインに対してコントローラを提案します。例えば、ユーザー管理のための1つのコントローラー、フォーラムのポスト管理のためのもう1つのコントローラーです。 Springを使ってRestfullコントローラを読むと、実装するコントローラの数を知ることができます。

+0

代わりに、代わりに単一のサーブレットを使用する必要がありますか? しかし、それはまだ明らかではありません(私のために)、なぜ複数のサーブレットを使用していません。 – guiltry

+0

@guiltry:春MVCのディスパッチサーブレットを使用すると、代わりのコントローラを使用することができますので、あなたは、複数のサーブレットを使用していない、とのコントローラはそれほど苦痛に対処するためです。 –

+0

単一のサーブレットを使用すると、web.xmlで行わなければならない設定が制限されます。春のコントローラは、特別のDispatcherServletからのリダイレクトを処理するために構築されています。 Nathanが説明したように、コントローラーの構成はあまり複雑ではありません。 –

0

あなたは、このようなジャージーのようなものではなく、春のMVCのverbosenessで実施する方がはるかに簡単である開発者向けAPI RESTfulなサービスとして何かをしたい場合は、複数のサーブレットを持つことができます。この場合、Jerseyを使用するAPIサービス用のサーブレットと、フロントエンドのWebサイトを処理するSpringサーブレットがあります。