38

いくつかのことを片付ける必要があります。私はこれに対する答えを探していましたが、私の特定の質問に対する良い答えを見つけることができないようです (たとえば、この質問は答えをかじっていました:サーブレットと Web サービスの違い)。

私の理解では、「リクエスト処理」、別名「コントローラー」を「MVC 指向」の Web アプリケーションに実装するにはさまざまな方法があり、そのうちの 2 つは次のとおりです。

  1. 「コントローラー」として使用されるJava 固有のサーブレット(つまり、eclipse で [新規] -> [サーブレット] をクリックして作成するサーブレット)。これは拡張され、などHttpServletのメソッドを使用します。doGetdoPost
  2. Spring MVC アノテーション付き@Controllerクラス (はい、 a を使用DispatcherServlet)。これでは@RequestMethod GET/POSTなどを使用します。

今私の質問に...

  • どちらか一方をいつ使用しますか?
  • ある方法を他の方法よりも使用する一般的な利点はありますか? (同様に、一般的に、ある方法が他の方法よりも推奨されていますか?)

[編集] : 強調されたキーワード

4

3 に答える 3

25

サーブレットと Spring MVC コントローラーは同じことを行うために使用できますが、Java アプリケーションの異なるレベルで動作します

サーブレットは J2EE フレームワークの一部であり、すべての Java アプリケーション サーバー (Tomcat、Jetty など) はサーブレットを実行するために構築されています。サーブレットは、J2EE スタックの「低レベル」レイヤーです。servlet.jar はアプリケーション サーバーにあらかじめパッケージ化されているため、アプリケーションを実行するのに必要ありません。

Spring MVC コントローラーは、作業を容易にするためにサーブレット上に構築されたライブラリーです。Spring MVC は、フォーム パラメーターからコントローラー メソッド パラメーターへのマッピング、バイナリ フォーム送信の簡単な処理 (つまり、フォームがファイルをアップロードできる場合) など、より多くの組み込み機能を提供します。Spring MVC コントローラーを実行するには、必要な jar をアプリケーションにパッケージ化する必要があります。

「低レベル」にする必要がある場合は、サーブレットを使用する必要があります。たとえば、パフォーマンス上の理由が考えられます。Spring MVC のパフォーマンスは良好ですが、オーバーヘッドがある場合、アプリケーション サーバーから可能な限り絞り出す必要がある場合 (および db などの他のレイヤーを既に調整している場合) は、サーブレットを使用します。J2EE Web 仕様の基礎を理解したい場合 (教育目的など) は、サーブレットを選択できます。

他のすべてのケースでは、Web フレームワークを選択できます/選択する必要があります。Spring MVC はその 1 つです。Spring MVC では、一からやり直す必要はありません (つまり、バイナリ フォーム管理、フォーム パラメータから Bean への変換、パラメータ検証など)。Spring MVC のもう 1 つの利点は、1 つのクラスでさまざまな URL やメソッドからの入力を簡単に管理できることです。サーブレットで同じことを行うことは可能ですが、コードはより複雑で読みにくくなります。私の意見では、Spring MVC は残りのサービスを構築し、単純なアプリケーション (つまり、単純なフォームを持つ Web アプリケーション) を管理するのに適しています。Ajax、ネストされたフォーム、およびセッションとページの両方の状態を持つアプリケーションを使用して非常に複雑なフォームを管理する必要がある場合は、コンポーネント ベースのフレームワーク (たとえばapache wicketなど) に切り替えることをお勧めします。

于 2015-03-30T11:32:03.547 に答える