|
||||
|
|
JSPの基本構文
|
|
|
JSPの構成要素
前述の通り、JSPの記述方法としては、HTMLの中に特定のタグを使用してプログラムを記述します。 JSPエンジンはこのタグを解釈し、同じ動作をする Javaソースを生成、コンパイルという手順を取りますが、そのためには JSPの記述は以下のようなタグから構成されています。
各タグの詳しい内容や使い方は以下を見てください。 ディレクティブ
ディレクティブは JSPページに関する情報を JSPエンジンに伝えるために使用します。使用できる ディレクティブは page、include、taglib の3種類が用意されています。ディレクティブは 3種類とも共通して、<%@ ディレクティブの記述 %> と記述します。その他で、記述に際しての注意点は以下の通りです。
pageディレクティブpageディレクティブは、JSPページのエンコードの種類であったり、JSPページがどの言語で記述されているかといった JSPページ時全体的な事柄に関して JSPエンジンに情報を提供します。pageディレクティブでは主に以下のような設定を行います。 contentTypecontentTypeでは、応答の文字セットとMIMEタイプを指定します。以下では コンテンツタイプが HTMLで、文字コードは Shift_JISであると宣言をしています。<%@ page contentType="text/html; charset=Windows-31J" %> importimport属性は、このページで使用するパッケージやクラスのインポート宣言を行います。複数指定する場合は「,」で区切って指定することが出来ます。<%@ page import="java.sql.*, java.util.TreeMap" %> sessionsession属性は このページがセッションに参加するか否かを true/falseで指定します。trueを指定した場合、セッションオブジェクト 「session」 が、このページで利用できるようにします。<%@ page contentType="text/html; charset=Windows-31J" %> bufferJSPページが実行されると、応答オブジェクトに書き込まれた出力は自動的にバッファされますが、buffer属性を使用することでバッファサイズを設定することが出来ます。<%@ page buffer="64kb" %> errorPageJSPページの実行時にはいくつもの例外が発生する可能性があります。errorPage属性の指定を行うことで、例外が発生した場合に指定したエラーページに Webコンテナが制御を転送してくれます。この属性は JSPファイルの先頭で使用します。<%@ page errorPage="/errorpage.jsp" %> isErrorPageisErrorPage属性は この属性が errorPage属性で指定されるエラーページであるか否かを true/falseで指定します。trueを指定した場合、javax.servlet.jsp.JspException型の例外オブジェクト 「exception」 が、このページで利用できるようにします。<%@ page isErrorPage="true" %> includeディレクティブincludeディレクティブは、別ファイルの内容をこのページに組み込みたい時に使用します。 ASPでも同様の機能があり、DB接続などの共通関数は共通のファイルとしてインクルードするといった事が一般的です。JSPでも、画面のヘッダ部、フッタ部を共通の JSPとしてインクルードして使用するといった使い方をすることが出来ます。 <%@ include file="common.jsp" %>pageディレクティブによるインクルードは 静的インクルード となります。 逆に動的インクルードは後述する インクルードアクションで行います。 静的なインクルードとは、JSPページのコンパイル前にインクルードファイルを読み込んでコンパイルを行い、動的インクルードとは、実行時にインクルードファイルを読み込みます。 そのため、インクルードファイルを変更した場合、動的インクルードには変更が反映されますが、静的インクルードに変更は反映されないということになります。また、動的インクルードでは、インクルードファイルの変数、メソッドにアクセスできませんが、静的インクルードではインクルードファイルの変数、メソッドにアクセスすることが出来ます。 taglibディレクティブtaglibディレクティブは、接頭辞と使用するタグライブラリを指定するために使用します。 <%@ taglib prefix="test" uri="testtaglib.tld" %> 宣言
宣言部では、JSPページで使用する変数の宣言や、メソッドの定義を自由に記述出来ます。宣言部に宣言した変数はクラス変数となり、ページがJSPエンジンにロードされた時に一度だけ初期化されます。
宣言部は <%! 各宣言 %> と記述して、JSP内に何度定義してもかまいません。また、一つの宣言部に変数を複数宣言したり、メソッドを複数定義することも可能です。 <%! int iCnt = 0; %>一つの宣言部で一つの変数とメソッドを定義
<%!
int iCnt = 0;
void incrementCnt(){
iCnt++;
}
%>
スクリプトレット
スクリプトレットは <% javaソース %> の中に通常のJavaソースを自由に記述することが出来ます。JSPのタグだけでは処理できないコードを記述する場合に使用したりします。宣言部が JSPエンジンにロードされた時に一度だけ実行されるのに対して、スクリプトレットはページにリクエストがあるたびに実行されます。
<%@page language="java"%>
<html>
<body>
<%
for(int i = 0; i < 10; i++){
for(int c = 0; c <= i; c++){
out.print("*");
}
out.print("<br>");
}
%>
</body>
</html>
[ 実行結果 ]
* ** *** **** ***** ****** ******* ******** *********ここで out.print という構文が出てきます。単語のから、出力するのだろうな、、というのは分かると思います。 outは JSP内で宣言なしで使用できる暗黙的なオブジェクトと呼ばれ、 javax.servlet.jsp.JspWriterクラスの実態です。 このオブジェクトはページの出力ストリームを指し、JSPからデータを出力する際に使われます。 式
JSPからブラウザに対して何か出力する場合、前述した暗黙オブジェクト「 out 」を使用する方法がありますが、いちいち、out.print("") と記述するのは手間がかかってしまいます。そこで JSPでは以下のように、より簡単に任意のオブジェクト型、リテラル値、基本データ型、メソッドの戻り値、算術式の結果を出力する方法を提供します。
<%= 出力する値 %>この式は <%=で始まり、 %>で終了します。また、式は通常の Javaソースのようなセミコロン(;)で終了してはいけません。式はページにアクセスされる度に評価を行い、出力結果をHTMLへ組み込みます。 <%@page language="java"%> <html> <body> <%! int i = 0; %> <%= ++i %> </body> </html>上記では毎回 iの値がインクリメントされカウントアップされます。 前述してありますが、式で使用できるのは基本データ型だけではありません。例えば以下のようにメソッドを記述する式も有効です。しかし、戻り値を持たないメソッドを式で記述することは出来ません。
<%@page language="java"%>
<html>
<body>
<%!
int i = 0;
int iIncrement(){
return ++i;
}
%>
<%= iIncrement() %>
</body>
</html>
アクション
アクションタグと呼ばれるタグを記述することで JSPエンジンに特定の処理を行うように命令をすることが出来ます。標準で提供されているタグは以下の 6種類ですが、プログラマがタグを定義してそれをJSP内で使用することも出来るようになっています。
コメント
JSPのコメントは <%-- から始まって、 --%> で終わります。ただし、JSPのコメントを入れ子にすることは出来ません。スクリプトレットや宣言部では Javaの標準的なコメントを使用します。
[helloworld.jsp] <%@ page language="java" contentType="text/html; charset=Windows-31J" %> <html> <body> Hello World <%-- JSPのコメント --%> <% // Javaのコメント形式 %> <!-- HTMLのコメント形式 --> </body> </html>[出力結果] <html> <body> Hello World <!-- HTMLのコメント形式 --> </body> </html> |