JSP

JSP (Java Server Page) はWeb アプリケーションにおける動的ページを記述するJava ベースのアーキテクチャーです。
更新日 2016-02-13

JSP とは

JSP(Java Server Page) とはhtml 同様のDOM 構造を持つテキストファイルです。html 等とは異なり、Java によってコンパイルされて、リクエスト時に 実行されます。従って単にWeb サイトにアップロードするだけでは動きません。サーブレットコンテナとよばれる実行環境(Tomcat など) に配置しておき、apache などからAJP プロトコルでプロキシ的に内部で呼び出します。
基本的にJSP 内に書かれたテキストはそのまま出力されます。HTMLタグもそうです。そして特殊なJSPタグのみがJava によって解析されます。 つまりDOM 構文を保ちながら、動的な処理も可能になります。可読性が高まり、保守や変更が容易になります。
難しい処理はJSP だけでは無理です。JSP はあくまでも表示部位の動的変化を実現するための技術だからです。

記述の仕方

スクリプトレット

JSP ファイル中において、任意の個所で<% と%> で括った中にJava ソースを記述できます。リクエスト時にサーバーサイドで 解析実行されます。このブロックの中ではJava 構文が使えます。しかしスクリプトレットは諸刃の剣です。柔軟な手法で問題解決が可能となる一方で、 JSP 本来の目的、データ処理と表示処理の分別を妨げ兼ねないからです。またDOM 構文から外れる事で可読性も低下しがちになります。
<%= messages %>

タグライブラリ

JSP で処理対象となるタグの事です。複数のタグがありまして、パッケージで用意されています。JSP 由来のタグ以外は、JSP の先頭のtaglib ディレクティブにて 宣言しておく必要があります。
定番の機能を揃えたJSTL という便利なタグライブラリもあります。

EL 式

EL(Expression Langage) 式 とは、オブジェクトへの参照をタグを使わずに行う記述式です。例えばタグですと<s:property value="objLink.url" /> といったものが、${objLink.url} といった感じで記述できます。メリットはなんといっても、あるタグの属性値に値を入れたい時などに便利なわけです。
// jsp:element を使うと記述量が・・・
<jsp:element name="a">
	<jsp:attribute name="href">
		<s:property value="objItem.objLink.url"/>
	</jsp:attribute>
	<jsp:body>
		<s:property value="objItem.objLink.name"/>
	</jsp:body>
</jsp:element>


// EL 式ならスッキリ!
<a href="${objItem.objLink.url}">
	${objItem.objLink.name}
</a>
他にも応用できます。
<div style="color:${objItem.visible?'#a0a0a0'?'#303030'}">
	${objItem.name}
</div>
EL 式で操作するオブジェクトのプロパティは、必ずgetter メソッドを持っていなければなりません。Java Bean でない場合に上手く解決できず、 エラーになるらしいです。