JSPエレメント
JSPページはJSPエレメントと、テンプレートデータから構成される。
JSPエレメントにはディレクティブ、スクリプティング、アクションの3種類のタイプがある。
1. ディレクティブエレメント
ディレクティブエレメントはJSPページ全体についての設定を定義するのに使う。
標準シンタックスでは下記のような書き方をする。
<%@ directive attr="value" %>
使用できるディレクティブには page, taglib, include の3つがある。
ディレクティブエレメントについての注意としては、
・page ディレクティブは基本的にはファイルの先頭に置く。
・<%@ の後と %> の前のスペースは任意。つまり下記のように書いても良い。
<%page language="java"%>
各ディレクティブの詳細についての説明は今後の記事でそのディレクティブを使用するときに行う予定。
2. スクリプティングエレメント
スクリプティング要素は宣言、スクリプトレット、表現の3種類に分類される。
JSP 2.0以降ではスクリプティング要素の代替として、エクスプレッション ランゲージ(EL)が導入されている。この説明は別の機会に行うとして、ここでは扱わない。
宣言
<%! (ここで宣言する) %>
Java の変数、メソッドの宣言を行う。宣言すると他のスクリプティング要素で使用できる。例えば、整数変数 i を宣言、初期化するには <%! int i = 0; %> とする。
スクリプトレット
<% (実行するコード) %>
リクエスト処理時に実行されるコード。ここで宣言した変数はローカルになるので、他の要素では使用できない。
例:
page ディレクティブの import 属性で java.util.Calendar クラスをインポートし、
Calendar オブジェクトの getTime() メソッドで日時を表示する。
<%@ page import="java.util.Calendar" %>
<h1><%
Calendar c = Calendar.getInstance();
out.print(c.getTime());
%></h1>
(ブラウザでの画面表示例)
ここで使用している out 変数はスクリプトレット内及びエクスプレッションエレメント内で常に使用できるオブジェクトの一つで、レスポンスページに出力するための出力ストリーム。
具体的には jakarta.servlet.jsp.JspWriter クラスのオブジェクト。
表現
<%= (表現) %>
Java言語の表現がリクエスト処理時に評価されてレスポンスに挿入される。 評価結果は String 型にされる。
例:
java.util.Date クラスを使用した日時の表示。
<h1><%= (new java.util.Date()).toLocaleString() %></h1>
セミコロン; は必要ないことに注意。
(ブラウザでの画面表示例)
3. アクションエレメント
JSP 3.1 のアクションはjsp のプレフィックスを持つ XML エレメントを使って書かれる。
アクションについての説明は別の記事で行う予定。
XMLシンタックス
前の記事で述べたように、JSPページの文法には標準シンタックスとXMLシンタックスの2つが存在する。XMLシンタックスで記述したファイルはJSP ドキュメントと呼ぶ。
JSPのそれぞれのエレメントには対応するXML シンタックスのタグが存在する。
ディレクティブエレメント <%@ page language="java" %> は XMLシンタックスでは下記のように書かれる。属性のリストは標準シンタックスと同じようにスペース区切りで与える。
<jsp:directive.page language="java" />
taglib や include ディレクティブの場合はそれぞれ下記のようになる。
<jsp:directive.taglib ... />
<jsp:directive.include ... />
スクリプティングエレメントの宣言<%! ... %>、スクリプトレット <% ... %>、表現 <%= ... %> のそれぞれは下記のようなXMLタグを使って書く。
<jsp:declaration> ... </jsp:declaration>
<jsp:scriptlet> ... </jsp:scriptlet>
<jsp:expression> ... </jsp:expression>
アクションエレメントは標準シンタックスでもXMLシンタックスでも同じ。ただし、一部のアクションは標準シンタックスで記述されたJSPページ内では使用できない。
参考資料:
JSP エレメントについては主に下記を参照。
URL: jakarta.ee/specifications/pages/3.1/ にある "Jakarta Server Pages 3.1 Specification Document"
コメント: 記事内の情報は著者が個人的に調べた範囲で理解しているものです。必要に応じて訂正する場合があります。
著者・投稿者: ENARTS05
編集履歴:
2023/10/2 作成