JavaServer Pages

JavaServer Pages (JSP) は、HTML内にJavaのコードを埋め込んでおき、Webサーバで動的にWebページを生成してクライアントに返す技術のこと。
概要.
Javaのコードは、codice_1とcodice_2記号で囲まれた部分に書かれる。HTMLの中にスクリプトが断片的に見えるため、この記法をスクリプトレット (scriptlet) と呼ぶ。これよりプログラムコードをタグに見立てることができるため、プログラムとデザインの棲み分けができる。定義されたカスタムタグライブラリを使用すればスクリプトレットを使わずに独自のタグでコードを埋め込むことができる。
サーブレットの機能のひとつとして実装されている。
サーブレットと違い、HTMLの中でデザイン部分とプログラム部分を分けて書くためにある程度までウェブデザイナの負担を減らすこともできる。また、静的な出力が多い場合に適している。類似技術としてPHP、ASP、ASP.NETなどがある。
クライアントからのJSPの実行がリクエストされると、アプリケーションサーバのサーブレットコンテナはJSPソースファイルをサーブレットのソースコードに変換する。そしてさらにそのソースコードをその場でコンパイルして実行し、結果をクライアントに返信する。このため、最初はコンパイルの時間がかかるが、いちどコンパイルが実行されると2回目以降は必要なくなるため、結果としてアクセス速度が早くなる。
カスタムタグライブラリとしては、Javaの標準仕様の一部として定義されたJSTLや、Apache Strutsのようなフレームワークが独自に定義したものがあり、こうしたタグを使用することでより可読性を高めることができる。JSP2.0では、従来のタグハンドラクラスを作成しなくてもカスタムタグライブラリを作成できるタグファイルの仕組みが導入された。タグファイは、JSPの文法で作成されるファイルで拡張子は、「.tag」となる。
Model View Controllerアーキテクチャでは、JSPをView、Java ServletをController、JavaBeansをModelとして用いることが想定されている。
構文.
タグ.
HTMLの中に以下の特殊タグを記述することができる。
ディレクティブ.
ディレクティブの種類としては、以下のものがある。
アクション.
アクションの種類としては、以下のものがある。
JSP2.0では、以下のものが追加になった。
暗黙オブジェクト.
Javaのコード中で以下の変数があらかじめ利用できる状態（暗黙オブジェクトとして）で用意されている。
JSTL.
JSTL（、JSP標準タグライブラリ）は、JSPでよく用いられる標準的な機能を定義したカスタムタグライブラリである。2001年に定義されたJ2EE 1.3において標準仕様の一つとして導入された。
JSTLでは、変数の操作やif文といった標準的な機能を提供するコアライブラリに加え、XMLや国際化、SQLのライブラリ、さらに文字列操作といった関数をまとめたライブラリが提供されている。
EL式.
EL式（、式言語）は、JSP 2.0で導入された新たな構文で、従来のスクリプトレットに代わってより可読性に優れたJSPファイルを記述できるようにしたもの。EL式はJSPをベースにしたWebアプリケーションフレームワークであるJSFにおいても独自に定義されていたが、後のJSP 2.1, JSF 1.2において一つの仕様に統合され（、統合式言語）、さらに2013年のEL 3.0ではJSPから独立したJava EE 7の仕様の一つとなっている。
Expression Languageは、${}で表現する。
Expression Languageでは、以下のような暗黙オブジェクトが利用できる。