4

ここに画像の説明を入力してください

それで、ええ、私は私が理解したことをすべて要約し、簡単な図を描きました。

私が間違っていなければ、サーブレットはCGI(Common Gateway Interface)です。これは、サーバー上のリソースにアクセスできる唯一の方法がサーブレットであるためです。つまり、要するに、それは共通のゲートウェイです。

コンテナは、Apache Tomcatと同様に、ユーザーから送信されたリクエストをキャプチャしてサーブレットに送信する役割を果たします。

ユーザーが認識するのは、Webアプリと呼ばれる動的なWebページです。

これは私がこれまでに学んだことです。

私はそれを正しく学びましたか?

4

2 に答える 2

4

あなたはほとんど正しいです。プレーンサーブレットを使用する場合に従うことができる一般的なワークフローは次のとおりです。

サーブレットレンダリングページ

  1. サーブレットコンテナは、リクエストURLに一致するサーブレットを検索します

  2. doGet()または、doPost()要求されたHTTPメソッドに応じて呼び出されます

  3. サーブレットはいくつかの処理を行います

  4. 応答(HTML、XML、JSON、画像...)はサーブレットで直接生成され、getOutputStream()またはを使用してクライアントに送信されます。getWriter()

    PrintWriter out = response.getWriter();
    out.println("Hello World");
    

JSPはリクエストを処理します

  1. サーブレットコンテナがJSP一致リクエストを見つけます。各JSPの下が内部サーブレットに変換されることを理解する必要があります

  2. このJSPは解釈されます。生のテキストが直接送信され、スクリプトレットのJavaコードが実行されます

  3. JSPが終了し、リクエストが完了します

サーブレットはJSPに転送します

  1. 最初のシナリオの1〜3と同じ

  2. サーブレットはJSPファイルを選択し、そのJSPに転送します

  3. 次に、JSPファイルが評価され、サーブレットによって渡されたコンテキスト(要求属性、セッション)にアクセスできます。

    RequestDispatcher dispatcher = getServletContext()
     .getRequestDispatcher("foo.jsp");
    dispatcher.forward(request, response);
    

最後のシナリオは、ビジネスロジック(サーブレット)とプレゼンテーション(JSP)が混在していないため、最適なシナリオと見なされます。

于 2013-01-30T17:46:00.407 に答える
1

サーブレットは要求を処理し、応答を生成します。

JSPはサーブレットにコンパイルされるため、JSPはサーブレットのサブセットです。

正しいJSPを探すのはサーブレットではなく、これがコンテナの仕事です。

于 2013-01-30T17:44:07.350 に答える