[java] いつあなたはJSPを使用しますか?


Answers

JSP:ユーザーにデータを提示する。 ビジネスロジックはここには存在せず、確かにデータベースアクセスもありません。

サーブレット:フォームまたは特定のURLからの入力を処理します。 通常、人々はServletの上にStruts / Springのようなライブラリを使用してプログラミングをクリアします。 サーブレットは、入ってきたデータを検証し、それをバックエンドのビジネス層の実装(テストケースをコード化することができます)に渡すだけです。 結果の値を要求またはセッションに置き、JSPを呼び出して表示する必要があります。

モデル:ウェブサイトが扱う構造化データを保持するデータモデル。 サーブレットは引数をとり、それらをモデルに入れ、次にビジネスレイヤーを呼び出すことができます。 このモデルは、データベースにアクセスするためにバックエンドのDAO(またはHibernate)とインターフェイスできます。

重要ではないプロジェクトであれば、MVC構造を実装する必要があります。 それは、もちろん、些細な機能のために過剰です。 あなたの状況では、ステータスなどを更新するためにDAOを呼び出すサーブレットを実装したり、必要なものを実装します。

Question

この質問には既に回答があります:

私は支払いを処理するために顧客を別のサイトに送るアプリケーションを持っています。 顧客の外にある他のサイトは、サーバー上のページを呼び出して、ステータスが支払いのステータスであることをお知らせします。 呼び出されたページは、支払いアプリケーションによって指定されたパラメータをチェックし、トランザクションがわかっているかどうかを確認します。 次に、ステータスを反映するようにデータベースを更新します。 これはすべて顧客とのやりとりなしに行われます。

私は個人的にJSPとしてこの機能を実装することを選択しました。ファイルをコンパイルしてパッケージ化してから、設定ファイルにエントリを追加するよりも、ファイルをファイルシステムにドロップするほうが簡単だからです。

私は、ページの機能性を考慮して、サーブレットが好ましいオプションであると推測します。 問題は次のとおりです。

  • 私の推定は正しいのですか?
  • JSP上でサーブレットを使用する本当の理由はありますか?
  • その理由は何ですか?



  • JSPは本質的にサーブレットコンテナによって自動的にサーブレットにコンパイルされるマークアップなので、コンパイルステップは両方のインスタンスで行われます。 このため、JSPをサポートするサーブレットコンテナでは、JREだけを必要とするのではなく、JDK全体を使用可能にする必要があります。

    JSPの主な理由は、ページのレンダリングに必要なコードの量を減らすことです。 ページをレンダリングする必要がない場合は、サーブレットが優れています。




    ほとんどのJavaアプリケーションは、現在、MVCパターンに基づいて構築されています...コントローラ側(サーブレット)では、ビジネスロジックを実装します。 サーブレットコントローラは通常、実際のHTMLレスポンス(MVCのビュー)を生成するjspにリクエストを転送します。 目標は懸念を切り離すことです...その件について数千の書物が書かれています。




    JSPとサーブレットの違いについて上記のすべての点に同意しましたが、ここではさらにいくつかの考慮事項があります。 あなたが書く:

    私は支払いを処理するために顧客を別のサイトに送るアプリケーションを持っています。 顧客の外にある他のサイトは、サーバー上のページを呼び出して、ステータスが支払いのステータスであることをお知らせします。 呼び出されたページは、支払いアプリケーションによって指定されたパラメータをチェックし、トランザクションがわかっているかどうかを確認します。 次に、ステータスを反映するようにデータベースを更新します。 これはすべて顧客とのやりとりなしに行われます。

    あなたのアプリケーションは別のアプリケーションの支払いサービスを利用しています。 ソリューションが壊れやすいのは、他のアプリケーションの支払いサービスが変更されると、JSPページが破損するためです。 または、アプリケーションの支払いポリシーを変更する場合は、ページを変更する必要があります。 簡単な答えは、アプリケーションがWebサービスを介してアプリケーションの支払いサービスを使用していることです。 サーブレットもJSPページも消費ロジックを置くのに適していません。

    次に、これらの行に沿って、ここ数年のサーブレット/ JSPページのほとんどの使用法が、SpringやStrutsのようなフレームワークのコンテキストの中に置かれています。 私はSpringをお勧めします。これは、サーバー・ページからWebサービス・ゲートウェイ・ロジックからDAOに必要なものを完全にスタックするためです。 Springのナットとボルトを理解したい場合は、 Spring in Actionをお勧めます。 Java(またはC#)のような言語で書かれたエンタープライズアーキテクチャを階層化する方法を理解する必要がある場合は、Fowlerのエンタープライズアプリケーションアーキテクチャパターンをお勧めします。




    JSPはサーブレットを作成するためのショートカットです。 実際、それらはコンパイルの前にサーブレットJavaコードに変換されます。 (私は名前を覚えていないいくつかのtomcatサブディレクトリの下でそれをチェックすることができます)。

    サーブレットとJSPのどちらかを選択するには単純なルールを使用します。ページにJavaコードよりも多くのhtmlコードが含まれている場合はJSP、そうでない場合はサーブレットを作成します。 大まかには次のように解釈されます。コンテンツプレゼンテーションやサーブレットの制御、検証などにJSPを使用する

    また、単純なJavaクラス構文を使用するため、サーブレット内でコードを整理して構造化する方が簡単です。 JSPはその中でメソッドを作成することは可能ですが、よりモノリシックな傾向があります。




    Javaサーブレットでは、HTMLタグはJavaコーディングに埋め込まれています。 JSPでは、javaコーディングはHTMLタグに埋め込まれています。

    大きな問題の大きなアプリケーションでは、サーブレットは、Javaコーディングの中でより多くのhtmlタグを埋め込むことが不可能であるため、読み込み、理解、デバッグなどの複雑さがあります。したがって、jsp.In JSPを使用すると、理解しやすく、デバッグしやすくなります。

    ありがとうございます、Sivakumar.j






    Links