JSPページの仕組みをわかりやすく解説――JSPアーキテクチャの基本
WebサーバーがJSPページを処理するには、JSPエンジン、すなわち「JSPコンテナ」と呼ばれる仕組みが必要です。JSPコンテナは、JSPページへのリクエストを受け取って処理する役割を担います。このチュートリアルでは、JSPコンテナを内蔵し、JSPページの開発をサポートしているApacheを使用します。
JSPコンテナはWebサーバーと連携しながら、JSPに必要な実行環境や各種サービスを提供します。さらに、JSPを構成する特殊な要素をどのように解釈すればよいかも把握しています。
次の図は、WebアプリケーションにおけるJSPコンテナとJSPファイルの位置づけを示したものです。

JSPの処理の流れ
以下の手順は、WebサーバーがJSPを使ってWebページを生成するまでの一連の流れを説明したものです。
通常のページと同様に、ブラウザがWebサーバーへHTTPリクエストを送信します。
Webサーバーは、そのHTTPリクエストがJSPページへのものだと認識し、JSPエンジンへ処理を引き渡します。判別はURLで行われ、.htmlではなく.jspで終わっている場合にJSPページと見なされます。
JSPエンジンはディスクからJSPページを読み込み、サーブレットのコードへ変換します。この変換は非常にシンプルで、テンプレートテキストはすべてprintln()文に、JSP要素はすべてJavaコードに置き換えられます。このコードが、ページの動的な振る舞いを実現します。
JSPエンジンはそのサーブレットを実行可能なクラスとしてコンパイルし、元のリクエストをサーブレットエンジンへ引き渡します。
Webサーバーの一部であるサーブレットエンジンが、サーブレットクラスを読み込んで実行します。実行中、サーブレットはHTML形式の出力を生成し、その出力はHTTPレスポンスとしてサーブレットエンジンからWebサーバーへ渡されます。
Webサーバーは、HTTPレスポンスを静的なHTMLコンテンツとしてブラウザへ返します。
最後に、WebブラウザはHTTPレスポンス内の動的に生成されたHTMLページを、あたかも静的ページであるかのように処理して表示します。
以上の一連の流れを、次の図にまとめました。

通常、JSPエンジンは、対象のJSPファイルに対応するサーブレットがすでに存在するかどうか、またJSPファイルの更新日時がサーブレットより古いかどうかを確認します。JSPが生成済みサーブレットより古い場合、JSPコンテナは「JSPは変更されておらず、生成済みサーブレットの内容もまだ一致している」と判断します。この仕組みにより、PHPなどの他のスクリプト言語と比べて処理が効率化され、動作も高速になります。
つまりある意味で、JSPページとは「Javaプログラミングの達人でなくてもサーブレットを書けるようにする、もうひとつの方法」だと言えます。翻訳(変換)フェーズを除けば、JSPページは通常のサーブレットとまったく同じように扱われるのです。
-
JSPでCookieを設定する方法を3ステップでわかりやすく解説
JSPでCookieを設定する基本の流れ JSPでCookieを扱う場合、基本的には次の3つのステップで設定を行います。 Cookieオブジェクトを作成する 有効期限(最大生存期間)を設定する HTTPレスポンスヘッダーにCookieを追加して送信する それぞれの手順を順番に見ていきましょう。 ステップ1:Cookieオブジェクトの作成 Cookieクラスのコンストラクタに、Cookieの名前と値(どちらも文字列)を引数として渡してオブジェクトを生成します。 Cookie cookie = new Cookie("key","value"); 注意点
-
JSPでデータソースを設定する方法!JSTLのsql:setDataSourceタグの使い方を徹底解説
JSPでデータベースに接続する際、<sql:setDataSource>タグを使用すると、データソースの設定情報をスコープ付き変数として保存できます。この変数は、他のJSTLデータベースアクション(<sql:query>など)への入力として利用できるため、データベース接続設定を一元管理できるのが大きなメリットです。 sql:setDataSourceタグの主な属性 <sql:setDataSource>タグには、以下の属性が用意されています。 属性説明必須デフォルト値 driver登録するJDBCドライバクラスの名前いいえなし urlデータベース接続