2.JSP のディレクティブ

ディレクティブとはJSP コンテナに JSP のページの情報を指示するためのものです。

(1) ディレクティブの種類

 JSP とは、HTML ファイルの内部に、<% Javaで記述 %> のように記述し、Web ブラウザからのリクエストのたびに Java をサーバ側で実行し、HTML 中の Java の部分をその処理結果で置き換えて Web ブラウザに送り出すというものです。また、「Javaで記述」部分には、それ以外にも様々な機能を指定することができます。その中の一つがディレクティブ です。

 ディレクティブはJSPコンテナにJSPのページの情報を指示するためのものです。構文及びディレクティブの種類は次のとおりです。


  構文 <%@ ディレクティブ 属性=値 %>



ディレクティブ内容
pageJSPページの様々な属性を定義します
taglibJSPページが使用するタグライブラリを宣言します
includeJSPページに外部ファイルの内容をJavaコード変換時に挿入します


(2) page ディレクティブ

 

属性説明
import インポートするパッケージを指定します。カンマで区切れば複数指定できます。

例 <%@ page import="java.util.*,java.text.SimpleDateFormat"%>
session このJSPページがセッションに参加するかどうか指定します。trueを指定した場合はsessionオブジェクトを使用してセッションの情報を取得できます。falseを指定した場合はsessionオブジェクトを使用できません。規定値はtrueです。
buffer ページ出力時のバッファのサイズを指定します。noneを指定するとバッファリングを行いません。規定値は8kbです。

例 <%@ buffer="16kb" %>
   <%@ buffer="none" %>
autoFlush バッファが一杯になった時に自動的にフラッシュするかどうか(true)、またはバッファが一杯になった場合に例外を投げるかどうか(false)、を指定します。規定値はtrueです。bufferがnoneに指定されている場合はautoFlashはfalseにできません。
isThreadSafe スレッドセーフのレベルを指定します。
falseの場合、ページのインスタンスはクライアントからの要求を一つのスレッドで処理します。コンテナは一つのインスタンスへのアクセスを排他制御することでそのような動作を保証しています。複数の要求が同時にある場合、コンテナによってはプールしてある別のインスタンスで処理したり、新たにインスタンスを生成して処理したりする場合もあります。
trueの場合、複数のスレッドを用いて一つのJSPページで一度に複数のクライアントの要求を処理します。規定値はtrueです。
info JSPページの情報を記述します。

例 <%@ page info="Java Hello World JSP Page" %>
isErrorPage 別のJSPページからの例外を処理するかどうかを指定します。trueの場合は別のJSPページで発生した例外を参照するexecptionオブジェクトが使用可能になります。falseの場合はexceptionオブジェクトを使用できません。規定値はfalseです。
errorPage このJSPページで処理されなかった例外を処理する別のページのURLを指定します。例外を処理するページはpageディレクティブでisErrorPage属性をtrueに設定します。

例 <%@ page errorPage="/error.jsp" %>
contentType JSPページが生成する応答の文字セットとMIMEタイプを指定します。

例 <%@ page contentType="text/html; charset=Shift_JIS"%>
pageEncoding JSPページが生成する応答の文字セットを指定します。

例 <%@ page pageEncoding="Shift_JIS" %>


(3) taglibディレクティブ

 5 章のカスタムタグと関連するディレクティブです。

属性説明
uri タグライブラリディスクリプタファイルの絶対パスまたは相対パスを指定します。

例 TLDの所在を"/jsp/helloworld.tld"、タグプリフィックスを"ta" とします。
<%@ taglib uri="/jsp/helloworld.tld" prefix="ta"%>
prefix カスタムタグに使用する接頭辞文字列を指定します。jsp,jspx,java,javax,servlet,sun,sunwは予約されているため指定できません。また、空の文字列も指定できません。

例 前の uri を参照。


(4) includeディレクティブ

 

属性説明
file JSPページにテキストやJSPのコードが記述された外部ファイルの内容をJavaコード変換時に挿入します。

例 <%@include file="helloworld.html" %>


(5) 練習問題

 「 helloworldsjis.jsp 」を作成し、... \webapps\examples\jsp の下に置きます。

<%@ page contentType="text/html; charset=Shift_JIS" %>

<html>
<head>
<title>Hello World JSP</title>
</head>
<body>
<%
  String s1= "Hello World ";
  out.println(s1);

  String s2= "日本語でこんにちは";
  out.println(s2);
%>
</body>
</html>

 ブラウザを開いて作成したサブレットのプログラムを、次のようにURLで指定してください。 画面に「Hello World 日本語でこんにちは」が表示すればOKです。

  http://127.0.0.1:8080/examples/jsp/helloworldsjis.jsp



前の章(1.JSP とは)    次の章(3.JSP のアクション)