JSP 構造

ネットワークサーバーは、JSPページを処理するためのJSPエンジン、つまりコンテナを必要とします。コンテナはJSPページへのリクエストを傍受する役割を担います。本チュートリアルでは、JSPコンテナを内蔵したApacheを使用してJSP開発をサポートします。

JSPコンテナはWebサーバーと連携して、JSPの正常な動作に必要な実行環境やその他のサービスを提供し、JSPウェブページに固有の特殊な要素を正しく識別できます。

次の図は、WebアプリケーションにおけるJSPコンテナとJSPファイルの位置を示しています。


JSP 処理

以下の手順は、WebサーバーがJSPを使用してウェブページを作成する方法を示しています。

  • 他の通常のウェブページと同様に、ブラウザはサーバーにHTTPリクエストを送信します。

  • WebサーバーはこれがJSPウェブページへのリクエストであることを識別し、そのリクエストをJSPエンジンに渡します。これはURLまたは.jspファイルを使用して行われます。

  • JSPエンジンはディスクからJSPファイルをロードし、それらをServletに変換します。この変換は、単にすべてのテンプレートテキストをprintln()文に置き換え、すべてのJSP要素をJavaコードに変換するだけです。

  • JSPエンジンはServletを実行可能なクラスにコンパイルし、元のリクエストをServletエンジンに渡します。

  • WebサーバーのあるコンポーネントがServletエンジンを呼び出し、Servletクラスをロードして実行します。実行中に、ServletはHTML形式の出力を生成し、それをHTTPレスポンスに埋め込んでWebサーバーに引き渡します。

  • WebサーバーはHTTPレスポンスを静的HTMLウェブページとしてブラウザに返します。

  • 最終的に、WebブラウザはHTTPレスポンス内で動的に生成されたHTMLウェブページを、静的ウェブページを処理するのと同じように処理します。

上記の手順は次の図で表すことができます。

一般的に、JSPエンジンはJSPファイルに対応するServletが既に存在するかどうかをチェックし、JSPファイルの変更日時がServletより前かどうかをチェックします。JSPファイルの変更日時が対応するServletより前であれば、コンテナはJSPファイルが変更されておらず、Servletが有効であると判断できます。これにより、全体のプロセスは他のスクリプト言語(PHPなど)と比較して効率的で高速になります。

要するに、JSPウェブページは、Javaプログラミングの達人にならずにServletを書くための別の方法です。解釈段階を除けば、JSPウェブページはほとんど通常のServletとして扱うことができます。

その他の拡張機能