2013-05-08 7 views
21

私はいくつかの問題を解決する必要があります。私はこの答えを探していましたが、私の具体的な質問には良い答えが見つからないようです(例えば、この質問は回答ではじまる:Difference between servlet and web service)。サーブレットまたは@Controllerを使用する場合

  1. AのJava固有:私の理解へ

    、あなたがそれらの二つがあること、「MVC指向」のWebアプリケーションでは、「要求処理」、別名「コントローラ」を実装することができ、さまざまな方法がありますサーブレット(つまり、例えば「eclipse」で「 - > サーブレット」をクリックして作成したもの)を「コントローラ」として使用します。この1 はHttpServlet延びており、あなたは(はい、DispatcherServletを使用して)@Controllerクラスを注釈付きdoGetdoPostなど

  2. A Spring MVCのようなメソッドを使用します。これを使用すると、使用@RequestMethodGET/POSTなど、私の質問に今

...

  • あなたはどちらか一方を使用できますか?
  • 一般の利点がありますか?は(同様に、一般に、他の上に推奨一つの方法である?)

[EDIT]:強調キーワード

答えて

15

言語を学ぶことに興味がある学生なら、今はサーブレットに固執します。サーブレットだけを使ってWebアプリケーションを書くことは可能ですが、実際にはJSPも見てみたいでしょう。

JSPは、htmlとスクリプト要素を混在させることができるサーブレットを作成する便利な方法です(ただし、jspでJavaコードをタグやel式にすることは避けてください)。カバーの下では、サーブレットとしてコンパイルされますが、あなたは面倒なprintステートメントをたくさん使う必要がありません。

少なくとも、サーブレットとJSPを基本的に理解することが重要です。 Spring MVCは、サーブレットの上に構築された多くのフレームワークの1つで、Webアプリケーションの作成作業を簡単にします。基本的にすべてのリクエストは、front controllerとして動作するDispatcherServletにマップされます。

のDispatcherServletは、次いで、その注釈着信要求に一致するコントローラを呼び出します。これはweb.xmlにこれらのマッピングを書く必要がありません(ただしサーブレット3.0ではサーブレットに注釈を付けることができます)。しかし、フォームフィールドをオブジェクトにマッピングする、jsr303アノテーションを使用してそのオブジェクトを検証する、xmlやjsonなどに入力と出力をマップするなど、他にも多くのメリットがあります。コアスプリングと緊密に統合されているので、コントローラが呼び出すサービス。

これは、サーブレットの上に構築され、競合するフレームワークの茄多があることは注目に値します。 Spring MVCは最も一般的なものの1つで、見るには悪い選択ではありません。

+0

素敵な説明!私は物事が個々にどのように機能するかを基本的に理解していますが、いずれの方法論を使用するかについては私の指を置くことができません。実際の使用分野を詳述することなく、2つの違いを説明しました。ある方法を他の方法よりも使用する状況の例を挙げることはできますか? – Roger

+0

彼らは両方とも同じもの(ウェブアプリケーションの作成)に使用されています。違いは、Spring MVCは多くの利便性を追加する点です。Java Webアプリケーションを作成するほとんどの人は、開発を容易にするためにサーブレットの上に書かれた何らかのフレームワークを使用します。例えば。あなたが突然jsonを返す要求のユースケースを持っていれば、spring mvcはすでにそれをサポートしていますが、サーブレットでは自分自身でそれを把握しなければなりません。サーブレットが基礎となるテクノロジーであることを知ることは、依然として有用です。 –

+0

私は参照してください。したがって、基本的にサーブレットは両方のメソッドで作成されますが、まったく同じことを行います。#2では、Spring MVCをフレームワークとして使用するだけです。つまり、Spring MVCの@Controller、DispatcherServlet、およびいくつかのJSP(「java in html」)の助けを借りて、サーブレット(「Javaのhtml」(つまり、New - > Servlet)を作成する場合と同じことを作成します。 ..))といくつかのJSP/htmlは、Spring MVCの場合にのみ、Springはサーブレットビジネスの「厄介な部分」を「無料で」処理します。それはそれをすべて正確に理解することでしょうか? (少し遅くなって申し訳ありません:) – Roger

4

JSFとJSP、サーブレット時スプリングMVCのbuiltsとしてaswell。この問題はサーブレットがダイレクトhtmlを書く必要があるために動作するのが非常に「良い」ものではないということです。

mordern web技術を使用できるのであれば、データベースからhttpに画像を書き込むようなhttp出力が直接必要な位置にサーブレットを使用するだけです。

DipatcherservletまたはFacesServletで動作するSpringMVCまたはJSFを使用すると、高速で楽しくなります。彼らはあなたのファイルを解析し、それをサーブレットを通して送信します。

+0

JPAは、サーブレットとは何の関係もありません。サーブレットは通常、Spring MVCコントローラと同様に、JSPとともに使用されます。 –

+0

私はJSPを意味するとき私はいつもJPAを書く。ごめんなさい。 –

+0

@Templarお返事ありがとう!私はまだ少し混乱しています。 '@Control'(Spring MVC)をどのようなアプリケーションに使うのですか?また、どのようなアプリケーションを"普通のサーブレット "を使うのですか? – Roger

6

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など)に切り替えることです。

関連する問題