AサーブレットとSpring MVCのコントローラが同じことを行うために使用することができますが、彼らは、サーブレットは、J2EEフレームワークおよびすべてのJavaアプリケーションサーバ(Tomcatの、の一部であり、Javaアプリケーション
の異なるレベルに作用Jettyなど)は、サーブレットを実行するために構築されています。サーブレットは、J2EEスタックの「低レベル」レイヤーです。あなたはそれが
A Spring MVCのコントローラは、物事を簡単にするために、サーブレット上に構築されたライブラリであるアプリケーションサーバで事前にパッケージですので、あなたのアプリケーションを実行するためにservlet.jarは必要ありません。 Spring MVCには、フォームパラメータからコントローラメソッドへのパラメータマッピング、バイナリフォームの送信(フォームがファイルをアップロードできるとき)などのより簡単な処理など、より多くの組み込み関数が用意されています。あなたは「低レベル」を行く必要があるときは、サーブレットを使用する必要があり、そして例は、パフォーマンスの理由かもしれないSpring MVCのコントローラ
を実行するために、アプリケーションに必要なjarファイルをパッケージ化する必要があります。 Spring MVCはうまくいくが、オーバーヘッドがある場合は、アプリケーションサーバーからすべてを絞り出す必要がある場合(そしてdbなどの他のレイヤーを既に調整している場合)サーブレットを使用する必要があります。あなたは/ Webフレームワークを選択する必要がありますすることができ、他のすべてのケースでは(すなわち、教育目的のために)J2EEのWeb仕様の基盤
を理解したい場合は、サーブレットを選択することができます。 Spring MVCもその一つです。 Spring MVCでは、バイナリ形式の管理、フォームパラメータからBeanへの変換、パラメータの検証など、ホイールを再開発する必要はありません。 Spring MVCのもう一つの利点は、あるクラスでは、異なるURLとメソッドからの入力を簡単に管理できることです。サーブレットで同じことをすることは可能ですが、コードは複雑で読みにくくなります。 私の意見では、Spring MVCは、休憩サービスの構築と簡単なアプリケーション(単純なフォームのWebアプリケーション)の管理に適しています。 Ajax、ネストされたフォーム、およびセッションとページの両方の状態を持つアプリケーションの非常に複雑なフォームを管理する必要がある場合、私の助言はコンポーネントベースのフレームワーク(例えばapache wicketなど)に切り替えることです。
素敵な説明!私は物事が個々にどのように機能するかを基本的に理解していますが、いずれの方法論を使用するかについては私の指を置くことができません。実際の使用分野を詳述することなく、2つの違いを説明しました。ある方法を他の方法よりも使用する状況の例を挙げることはできますか? – Roger
彼らは両方とも同じもの(ウェブアプリケーションの作成)に使用されています。違いは、Spring MVCは多くの利便性を追加する点です。Java Webアプリケーションを作成するほとんどの人は、開発を容易にするためにサーブレットの上に書かれた何らかのフレームワークを使用します。例えば。あなたが突然jsonを返す要求のユースケースを持っていれば、spring mvcはすでにそれをサポートしていますが、サーブレットでは自分自身でそれを把握しなければなりません。サーブレットが基礎となるテクノロジーであることを知ることは、依然として有用です。 –
私は参照してください。したがって、基本的にサーブレットは両方のメソッドで作成されますが、まったく同じことを行います。#2では、Spring MVCをフレームワークとして使用するだけです。つまり、Spring MVCの@Controller、DispatcherServlet、およびいくつかのJSP(「java in html」)の助けを借りて、サーブレット(「Javaのhtml」(つまり、New - > Servlet)を作成する場合と同じことを作成します。 ..))といくつかのJSP/htmlは、Spring MVCの場合にのみ、Springはサーブレットビジネスの「厄介な部分」を「無料で」処理します。それはそれをすべて正確に理解することでしょうか? (少し遅くなって申し訳ありません:) – Roger