2011-01-23 12 views
1

私はこのような以前の質問で探しています:
https://stackoverflow.com/questions/98334/creating-a-java-servlet-web-application
How many actions should a servlet perform?サーブレットをどのように整理するのですか?

が互いに矛盾し、これらのスレッドで回答があります。一部の人々は各ページにサーブレットを使用すると言っています。

私は同じ問題があります。では、私のサーブレットはどのように決定されるのですか?単一の(またはいくつかの) "Front Controllers"を使用する場合、他のオブジェクトに委譲する要求をどのように解析しますか?たとえば、1つのページに3つの異なるフォームがある場合、そのリクエストの違いをどのように伝えますか?フォームと異なるページのリクエストの違いを教えてください。各フォーム+ページごとに複数のサーブレットマッピングを割り当てますか?パラメータ名を見てください。 「リクエストタイプ」パラメータをURLエンコードしますか?

多くのことを行う方法...

P.S.私はむしろStrutsのようなフレームワークを使用したくないです。サーブレットAPIを使ってこれを行う最良の方法を知りたいのです。私はTomcat7を使用しています。

答えて

1

フロントコントローラは、HTTPリクエスト用のアプリケーションへのゲートウェイです。しかし、それは通常HTTP要求を処理する方法を知っているクラスにHTTPリクエストをルーティングする交通警官として機能します。

たとえば、Springには、コントローラをリクエスト(通常はURL)にマップするDispatcherServletがあります。コントローラーは以前はインターフェースでしたが、コントローラーPOJOに注釈を付けることもできます。 handleRequest:

コントローラインタフェースは、単一の方法有する

ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) 

には、HTTP要求および応答を取り込んでのModelAndViewを返します。全ての

+0

ありがとうございますが、私はSpringを使いたくありません。しかし、自分でこのようにしなければならない場合、オブジェクトの処理とURLの要求の関係を知っているオブジェクトを作成し、それを "ディスパッチャー"として使用できますか?したがって、「ログイン」フォームは「www.mysite.com/Login」に行き、「お問い合わせ」フォームは「www.mysite.com/Contact」に行きます。どちらもFront Controllerサーブレットにマップされます。ディスパッチャを使用してこれらのフォーム要求を委任しますか? –

+0

私は「春を使う」とは言わなかった。私はこれを例として引用しています。はい、あなたはFrontControllerサーブレット、ViewResolverとController POJOなどを書くことができます。しかし、もしあなたがWeb MVCフレームワーク(SpringやWicketなど)について考えることがあれば、車輪の働きを学びたい場合にのみ車輪を再開してください。これは何百回も解決された問題です。あなたは何が良いと思いますか? – duffymo

+1

ハハおかげさま - 私はうまくいくとは思っていませんが、私はホイールを発明するのが好きです。 –

2

まず、既存のものを採用することなく、単一の(フロントコントローラ)サーブレットをhomegrowing(例えばSpringのDispatcherServlet、JSFのFacesServlet、自動改札のWicketServlet、等)は非常に仕事です。しかし、最終的には、よりシンプルで再利用可能な/保守可能なビジネスコードになります。通常、平均的なWebアプリケーションには複数のフロントコントローラサーブレットはありません。 1つしかないはずです。

本当に必要かどうかは分かりません。結局のところ、あなたのwebappに3つしかないWebフォーム(そして3つのサーブレット)があり、これが長期的には変わることがないなら、おそらくMVCフレームワークの自宅作りや既存のMVCフレームワーク。国境はどこにあるのかは分かりません。しかし、問題のWebアプリケーションが将来的に拡張や拡張が必要な​​場合は、MVCパターン(つまり、単一のフロントコントローラサーブレット)を採用する方が良いでしょう。

少なくとも、自宅に帰るつもりならば、this answerには多くの有用な情報があります。しかし、既存のフレームワークを再利用することは、上から下にフレームワークを既に知っている人を見つけるチャンスが増えているので、維持することができる前に別のフレームワークを学ぶ必要はありませんあなたのwebapp。

0

私は両方を試しましたが、私は缶詰のフレームワーク(それが良いか悪いかは関係ありません)を使用していません。私の感想は、構造がかなり独立してモジュール化されていると、サーブレットの方が優れているため、アップグレードやメンテナンスのためにそれらをオフラインにすることができるということです。同期の問題を扱う場合、特にデータベースの場合は、単一のサーブレットを使用する方が効果的です。しかし、もう一度、あなたはそれらをどのように分割するのが最善の判断です。私は差分サーブレットを使用して、db内のテーブルの完全に異なるセットにアクセスすることを知っています。

関連する問題