pageディレクティブ

広告

pageディレクティブについて確認していきます。構文は次の通りです。

<%@ page
   [ language="java" ]
   [ extends="package.class" ]
   [ import="{package.class | package.*}, ..." ]
   [ session="true|false" ]
   [ buffer="none|8kb|sizekb" ]
   [ autoFlush="true|false" ]
   [ isThreadSafe="true|false" ]
   [ info="text" ]
   [ errorPage="relativeURL" ]
   [ contentType="mimeType [ ; charset=characterSet ]" |
      "text/html ; charset=ISO-8859-1" ]
   [ isErrorPage="true|false" ]
   [ pageEncoding="characterSet | ISO-8859-1" ]
   [ isELIgnored="true|false"]
%>

この中で設定したい項目だけを取り出してpageディレクティブに設定します。例えば次の通りです。

<%@ page buffer="5kb" autoFlush="false" %>

特に頻繁に使われる項目は「contentType」と「import」になるかと思います。詳しくは次の項目の詳細を見てください。

項目の詳細

それでは各項目について確認していきます。

language

JSPページで使用する言語を指定します。ただ現状ではJavaしか指定できないため設定する必要はありません。デフォルト値として「java」が設定されています。

extends

JSPページを他のクラスのサブクラスにする場合に、スーパークラスを指定します。この項目の詳細は不明です。

import

JSPページでクラスをimportする場合に使います。Javaにおける「import」文と同じ役割となります。なお、JSPではデフォルトで次のクラスをimportしているため改めてimportしなくても利用することが出来ます。

java.lang.* 
javax.servlet.* 
javax.servlet.jsp.* 
javax.servlet.http.*

importの例ですが、今までのサンプルで次のような記述を行っていました。

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

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>

<%
out.println(new java.util.Date());
%>

</body>
</html>

この中で日付を表示する部分で「new java.util.Date()」と言う記述があります。このように記述する代わりにimportを使って先に「java.util.Data」をimportしておき、JSPページ内では「new Data()」とだけ記述することも出来ます。

<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.Date" %>

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>

<%
out.println(new Date());
%>

</body>
</html>

利用方法についてはJavaにおける「import」文と同等です。

なお、2つ以上のクラスをimportする場合には、カンマで区切って記述するか、ディレクティブ自体を複数記述して下さい。

<%@ page import="java.util.*,java.io.*" %>

又は

<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>

session

セッションを有効にするかどうかを指定します。「true」又は「false」を記述します。デフォルトは「true」です。JSPページにおけるセッション管理は別のページで詳しく見ていきます。

buffer

JSPページから出力されるデータをバッファしてからクライアントに返すかどうかを指定します。「none」を指定するとバッファされずにクライアントに出力データが送られます。「8kb」のようにキロバイト単位で容量を指定した場合は、出力データがバッファがいっぱいになるまで待ってからクライアントにまとめて送信されます(autoFlushも参照して下さい)。その為、効率よく送信が行えることが出来ます。デフォルトは「8kb」です。

autoFlush

バッファを使用する場合にバッファを超える出力データが合った場合の処理について指定します。「true」又は「false」を記述しますが、「true」の場合はバッファがいっぱいになった場合には自動的にクライアントにデータを送信します。「false」の場合はバッファがいっぱいになると例外が発生します。

「false」に設定する使い道が分かりませんが、「buffer」に「none」を指定した場合以外は「autoFlash」に「false」は設定しないほうがいいかと思います。

isThreadSafe

スレッドセーフで実行するかどうかを指定します。「true」又は「false」を記述しますが、「true」の場合は複数のリクエストが合った場合に同時に実行されることを許可します。「false」に設定した場合はリクエストの到着順に1つずつ処理されて行きます。デフォルトは「true」です。

info

JSPページに関する任意の情報を記述します。製作者や作成年月日など、どんなデータでも構いません。

errorPage

エラーが発生した場合に表示するページへのパスを記述します。指定しない場合はデフォルトのエラーページが表示されます。

isErrorPage

JSPページがエラー表示用のページかどうかを指定します。「true」又は「false」を記述しますがデフォルトは「false」です。「errorPage」でエラー表示先を指定した場合には「errorPage」を「true」に設定する必要があります。また「true」の場合は「exception」オブジェクトが利用可能になりますので、このオブジェクトを使ってエラーに関する情報を取得することが出来ます。

contentType

JSPページのデータ型と必要であれば文字コードをMIMEタイプを使って記述します。例えばJPEG画像を表すページであれば「image/jpeg」を、テキストファイルであれば「text/plain」を記述します。デフォルトで設定されているのはHTMLファイルで「text/html;charset=ISO-8859-1」となっています。このように文字コードを指定する場合はセミコロン(;)の後に「charset=文字コード」の書式で続けて記述して下さい。

文字コードはデフォルトで「ISO-8859-1」(通称Latin-1)が指定されています。日本語を使う場合にはデフォルトのままでは文字化けしますので、必ず日本語の文字コードを指定して下さい。Windwos環境であれば「text/html;charset=Shift_Jis」又は「text/html;charset=Windows-31J」などでいいかと思います。

今までのサンプルでも次のように記述していました。

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

<html>
...

pageEncoding

JSPページの文字コードを指定します。デフォルトの値は「contentType」で指定した文字コードとなりますのであえて指定は不要です。デフォルトは「ISO-8859-1」になります。

isElIgnored

EL式を適用するかどうかを指定します。trueの場合は適用しません。falseを設定すると適用します。デフォルトは「false」です。EL式については別のページで詳しく見ていきます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)