JSPは、大きく下記の要素に分かれます。
- コア要素
- ディレクティブ
- アクション
コア要素
JSP文法のコアとなるスクリプト要素です。サーブレットソースに変換されます。
項目 | 書き方 | 説明 |
---|---|---|
宣言 | <%! ~%> | フィールド、メソッド |
スクリプトレット | <%~%> | 処理記述 |
式 | <%=~%> | 出力する式 |
コメント | <%--~--%> | コメント |
EL式 | ${~} | ELを利用した記述 |
宣言
フィールドやメソッドを宣言できる。
フィールドの場合
1 |
<%! String str; %> |
上記のように、記述するとフィールドを宣言できます。ただ、サーブレットと同じく、JSPも1インスタンスが使いまわされるので、スレッドセーフではないのでご注意を!(下記の記事で解説しています。)、よって基本的に、変数を使う場合はこの機能は使わず、スクリプトレットのローカル変数で代用することが多数でしょう。(一応、こういうことができるということはおぼえておきましょう。)
メソッドの場合
1 |
<%! void sysout(String aisatu){ System.out.println(aisatu); } %> |
上記のように書くと、メソッドも宣言できます。
スクリプトレット
JSPの中にJavaコードを記述できます。
1 |
<% int a = 1; int b = a+5; %> |
式
1 |
<%=3+5 %> |
レスポンスに出力する値を結果として返す式を記述します。
スクリプトレットで同じように記述する場合は下記のように書きます。
1 |
<%out.println(3+5); %> |
JSPコメント
下記のように記述する。通常のHTMLコメント(<!-- ~ -->)と違い、ブラウザ上には出力されないので、セキュリティ的にこちらを使うようにする。
1 |
<%-- コメント内容 --%> |
EL式
簡潔な表現で、オブジェクトにアクセスができる言語です。
EL式の詳細は下記の記事で解説しています。
ディレクティブ
JSP変換時の設定等を記述するコマンドです。
例えば、JSPで文字コードを指定する場合は、下記のような記述があります。
1 |
<%@page contentType="text/html; charset=UTF-8" %> |
先頭についている、「%@page」という書き方を「ディレクティブ」と呼びます。
上記例では、「page」となっているので、「pageディレクティブ」と呼び、JSPが出力するページ全体に設定を行うという意味になります。
ディレクティブの種類
名前 | 説明 |
---|---|
page | JSPページ全体の設定 |
include | 他ファイルの静的なインクルード |
taglib | カスタムタグの定義(JSTLのタグのimport時にも使います。) |
tag | タグファイルにおけるpageディレクティブ |
attribute | カスタムタグの属性を言々できる。 |
variable | EL式の変数を定義できる。 |
pageディレクティブ
pageディレクティブと一口に言っても、多くの属性があります。
import属性
「pageディレクティブ」にはたくさんの属性がありますが、複数宣言して、意味がある属性はこの属性のみです。
例えば、pageディレクティブの属性に、import属性を使うことで、javaのライブラリをJSPでも使うことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<%@page contentType="text/html; charset=UTF-8" %> <%@page import="java.util.List,java.util.ArrayList" %> <HTML> <HEAD> <TITLE>ArrayList</TITLE> </HEAD> <BODY> <% List<String> list = new ArrayList<String>(); list.add("test"); out.print(list.get(0)); %> </BODY> </HTML> |
なお、下記のクラスは、デフォルトでインポートされているので、インポートの必要なし。
javax.servlet.http
javax.servlet.jsp
@includeディレクティブ(他のjspを読み込む)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<%@page contentType="text/html; charset=UTF-8" %> <%@include file="array.jsp" %> <HTML> <HEAD> <TITLE>ArrayList</TITLE> </HEAD> <BODY> <% List<String> list = new ArrayList<String>(); list.add("test"); out.print(list.get(0)); %> </BODY> </HTML> |
1 |
<strong>array.jsp</strong> |
1 |
<%@page import="java.util.List,java.util.ArrayList" %> |
taglibディレクティブ
カスタムタグを宣言できます。主に、JSTLというタグのライブラリを使う場合に使用します。
詳しくは、下記の記事で使い方等も解説しています。
アクション
JSPをリクエストした際に利用するJSPタグです。
アクション | 記述 | 説明 |
---|---|---|
標準アクション | <jsp:xxx>~ </jsp:xxx> | 標準で最初から利用できるアクション |
カスタムアクション(カスタムタグ) | <xxx:xxx>~ </xxx:xxx> | アクションのユーザー拡張 |
JSPのアクションは、「<jsp:~>」というように記述して、JSPの実行時に呼び出されます。
アクションには、「標準アクション」と「カスタムタグ(ほぼJSTLとみてよいでしょう。)」に分かれます。
標準アクションの種類
タグ名 | 説明 |
---|---|
<jsp:include> | 指定したJSPのインクルードを行う。 |
<jsp:forward> | 指定したJSP、サーブレットへフォワードを行う。 |
<jsp:useBean> | JavaBeansを扱う。 |
<jsp:setProperty> | JavaBeansにプロパティをセットする。 |
<jsp:getProperty> | JavaBeansからプロパティを取得する。 |
<jsp:plugin> | Javaアプレット等の、プラグイン実行用コードを出力する。今は、アプレット自体廃れてきているので使われなくなっています。 |
<jsp:body> | <jsp:attribute>タグを使った際に、bodyが必要な場合にこのタグで記述する。 |
<jsp:doBody> | タグファイルで、タグのbody部を評価する。 |
<jsp:invoke> | タグファイルで、受け取ったフラグメントを評価、実行する。 |
<jsp:attribute> | 標準アクション、カスタムタグ等の「属性」を、書く代わりに、この要素を使ってタグの子要素に記述する。 |
<jsp:element> | 動的にXML要素を追加する。 |
<jsp:output> | XML書式のJSP、タグファイルの中で、出力を行う。 |
<jsp:root> | XML書式のJSPルート要素で、名前空間を指定する。 |
<jsp:text> | 子要素に記述したテンプレートデータを指定する。 |
カスタムタグ(JSTL)
カスタムタグは、自由に技術者がタグをカスタマイズできる機能ですが、基本的にはJSTLという既に誰かが作ったライブラリを使って開発することがほとんどです。
特徴としては、EL式と相性が抜群であり、組み合わせて記述していくことになります。
EL式については、下記の記事で解説しています。
この記事へのコメントはありません。