JSP オブジェクトについて

デフォルトでは、JRun は JSP 内で使用するいくつかの暗黙的 JSP オブジェクトを作成します。これらの JSP オブジェクトは、JSP 仕様、Java サーブレット API、またはコア Java ライブラリによって定義されたオブジェクトのインスタンスです。これらのオブジェクトには、どの JSP からもアクセスできます。オブジェクトへのアクセスとは、オブジェクトメソッドを呼び出して、これらのメソッドに保管されているデータにアクセスすることです。

次の表で、各 JSP オブジェクトを説明し、それらのオブジェクトに対応するサーブレット API オブジェクトのタイプを定義します。
JSP
オブジェクト
サーブレット API オブジェクトの
タイプ

説明
application
javax.servlet.ServletContext 
サーブレット設定オブジェクトから取得したサーブレットコンテキスト
config
javax.servlet.ServletConfig 
JSP の ServletConfig
exception 
java.lang.Throwable
エラーページが呼び出される原因となるキャッチされていない例外
out
javax.servlet.jsp.JspWriter 
JSP の出力ストリームに書き込みを行うオブジェクト
pageContext
javax.servlet.jsp.PageContext
JSP に対するページコンテキスト
request
javax.servlet.HttpServletRequest
クライアントのリクエスト
response
javax.servlet.HttpServletResponse
クライアントへのレスポンス
session
javax.servlet.http.HttpSession 
リクエスト元クライアントのために作成された session オブジェクト

JSP オブジェクトは、Java サーブレット API からオブジェクトとして実装されます。JSP オブジェクトにより、これらの Java サーブレット API オブジェクトにアクセスするための簡易メカニズムが使用できます。

各オブジェクトとそのメソッドの詳細については、Java サーブレット API の HTML バージョンのドキュメントを参照してください。JSP オブジェクト名ではなく、表にリストされている Java サーブレット API オブジェクトタイプを使用します。

JSP オブジェクトへのアクセス

オブジェクトを作成しないように JSP に明示的に指示しないかぎり、JRun によって JSP が呼び出されると、前のセクションの表にリストされているすべての JSP オブジェクトが作成されます。たとえば、page ディレクティブの session 属性を false に設定できます。この場合、JRun はそのページの session オブジェクトをインスタンス化しません。

メモ:  セッショントラッキングを有効にした場合だけ、session オブジェクトが作成されます。exception オブジェクトが作成されるのは、JSP で page ディレクティブを使用して、isErrorPage を true に設定している場合だけです。詳細については、 「page ディレクティブ」 を参照してください。

JSP オブジェクトを JSP で呼び出すときは、次のシンタックスを使用します。

object_name.<メソッド>(<変数…>)

このオブジェクトのメソッドを呼び出す前に、オブジェクトをインスタンス化する必要はありません。オブジェクトはすべて page スコープです。つまり現在のページのステートメントからアクセスできます。

application オブジェクト

application オブジェクト使用すると、指定されたアプリケーションのすべてのユーザー間で情報を共有できます。アプリケーション内のどの JSP からも、application オブジェクトにアクセスできます。J2EE では、JSP ベースのアプリケーションは、仮想ディレクトリとそのサブディレクトリにあるすべての .jsp ファイルとして定義されます。

次の表で、application オブジェクトの一般的なメソッドを説明します。
メソッド
説明
getAttribute
(String name) 
指定された名前を持つ属性を返します。この名前を持つ
属性が存在しない場合は、null を返します。
getAttributeNames
アプリケーションオブジェクト内にある属性名をすべて
返します。
getInitParameter
(String name) 
初期化パラメータの値を返します。パラメータが存在
しない場合は、null を返します。
getInitParameterNames
初期化パラメータの名前を返します。
getServerInfo
JRun サーブレットエンジンの名前とバージョン番号を
返します。

次の例では、application オブジェクトに 2 つのパラメータを設定します。

<%
  application.setAttribute("appName", "Application Object Example");
  application.setAttribute("counter","0"); 
%>

次の例に示すように、このアプリケーションのこれ以降のページで、これらの設定にアクセスできます。

<HTML><BODY>
<h2>Display the default application settings</h2>
<%
  String appName = (String) application.getAttribute("appName");
  String counter = (String) application.getAttribute("counter");
%>
このアプリケーションの名前: "<%= appName %>"<BR>
The counter value = <%= counter %>
</BODY></HTML>

application オブジェクトの初期化パラメータを設定できます。クライアントが最初にアプリケーションをリクエストしたときに、JRun は初期化パラメータを application オブジェクトに書き込みます。パラメータにアクセスするには、application.getInitParameter メソッドを使用します。

一般的なテクニックは、次の例に示すように、データソースの名前を初期化パラメータとして web.xml ファイル内に設定することです。

<web-app>
...
<context-param>
  <param-name>datasourcename</param-name>
  <param-value>fred</param-value>
</context-param>
...
</web-app>

次の例では、アプリケーション全体の初期化パラメータにアクセスします。

...
<% String ds = (String)application.getInitParameter("datasource"); %>
try {
  DataSource ds = (DataSource) application.lookup(ds);
  dbConnection = ds.getConnection();
...
}
...

初期化パラメータへのアクセスの詳細については、 「初期化パラメータの使用」 を参照してください。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

config オブジェクト

config オブジェクトは、サーブレットが初期化されるときに、設定情報をサーブレットに渡します。サーブレットがアクセスできる設定情報は、初期化パラメータを表す名前/値のペアのセットと、サーブレットが実行されているコンテキストを表す ServletContext オブジェクトです。

次の表で、config オブジェクトの一般的なメソッドを説明します。
メソッド
説明
getInitParameter
(String name)
初期化パラメータの値を返します。パラメータが存在
しない場合は、null を返します。
getInitParameterNames
各サーブレットの初期化パラメータ名を返します。
getServletName
サーブレット名を返します。

初期化パラメータへのアクセスの詳細については、 「初期化パラメータの使用」 を参照してください。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

exception オブジェクト

exception オブジェクトはすべてのエラーと例外を表します。page ディレクティブの isErrorPage 属性を使用して、エラーページとして宣言したページ上の exception オブジェクトにアクセスできます。

次の表で、exception オブジェクトの一般的なメソッドを説明します。
メソッド
説明
getMessage
エラーメッセージが含まれている文字列を返します。
printStackTrace
標準エラーに exception オブジェクトとそのバックトレースを書き込みます。
toString
exception オブジェクトについて説明した文字列を
返します。

exception オブジェクト使用の詳細については、 「エラーの処理」 を参照してください。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

out オブジェクト

out オブジェクトは、JSP の出力ストリームに書き込みを行うオブジェクトを定義します。

次の表で、out オブジェクトの一般的なメソッドを説明します。
メソッド
説明
clear
クライアントにコンテンツを書き込まずに、出力バッファーをクリアします。バッファーが既にフラッシュされている場合、メソッドは
例外を投げます。
clearBuffer
コンテンツをクライアントに書き込まずに、出力バッファーをクリアします。
flush
クライアントにコンテンツを書き込んで、出力バッファーをフラッシュします。
getBufferSize
バッファーのサイズをバイト単位で返します。出力がバッファリング
されていない場合は、0 を返します。
getRemaining
バッファー内の空き容量をバイト単位で返します。
isAutoFlush
出力バッファーが自動的にフラッシュされる場合は true を返します。
newLine
出力に改行文字を書き込みます。
print
改行文字を付けずに、値を出力に書き込みます。
println
改行文字を付けて、値を出力に書き込みます。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

pageContext オブジェクト

pageContext オブジェクトは、JSP にローカルな情報を保管します。各 JSP には、ユーザーがページに入ったときに JRun によって作成される JSP 自体の pageContext オブジェクトがあり、ユーザーがそのページを離れたときに、このオブジェクトは JRun によって破棄されます。pageContext オブジェクトのメソッドを使用して、JSP の情報にアクセスしたり、他のアクションを実行できます。

次の表で、pageContext オブジェクトの一般的なメソッドを説明します。
メソッド
説明
findAttribute(String name)
page、request、session (有効である場合)、および application スコープ内の属性値を返します。属性が見つからない場合は、null を返します。
getAttribute(String name)
page スコープ内で、指定された名前に関連付けられているオブジェクトを返します。オブジェクトが見つからない場合は、null を返します。
removeAttribute
(String name)
指定された名前を持つ属性を削除します。
setAttribute
(String name, 
java.lang.Object 
attribute)
関連付けられた名前を持つオブジェクトを pageContext オブジェクトに書き込みます。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

request オブジェクト

request オブジェクトは、HTTP リクエスト中にクライアントから Web サーバに渡される値を取り出します。

次の表で、request オブジェクトの一般的なメソッドを説明します。
メソッド
説明
getCookies
リクエストとともにクライアントから送信された
すべての Cookie を返します。
getHeader(String name)
リクエストヘッダーの値を文字列として返します。
getAttribute(String name)
指定された属性値を返します。この属性が存在しない場合は、null を返します。
getAttributeNames
リクエストに含まれる属性名をすべて返します。
getHeaderNames
リクエストに含まれるすべてのヘッダー名を返します。
getHeaders(String name)
指定されたリクエストヘッダーの値をすべて返します。
getMethod
リクエストの作成に使用された HTTP メソッドに
対する GETPOST、または PUT を返します。
getParameter(String name)
リクエストに含まれるパラメータの値を返します。
パラメータが存在しない場合は、null を返します。
getParameterNames
リクエストに含まれるパラメータ名をすべて返します。
getParameterValues
(String name)
指定されたパラメータの値をすべて返します。
getQueryString
リクエストからクエリ文字列を返します。
getRequestURI
リクエストの URL のうち、プロトコル名からクエリ文字列までの部分を返します。
getServletPath
リクエストの URL のうち、サーブレットを呼び出す部分を返します。
setAttribute(String name, 
java.lang.Object o)
属性と、関連する値をリクエストに書き込みます。

JSP request オブジェクトを使用して、HTTP リクエストの一部としてクライアントから JSP に送信されたデータにアクセスします。たとえば、リクエストには HTML フォームから JSP に渡されたデータを含めることができます。フォーム データは HTTP リクエストの名前/値のペアとして JSP に送信されます。この情報にアクセスするには、request オブジェクトとそのメソッドを使用します。

また、パラメータをそのページのリクエスト URL の一部として JSP に渡すこともできます。たとえば、次の URL を使用して、JSP をリクエストし、そのリクエストと併せて 2 つのパラメータを渡すことができます。

http://localhost/my.jsp?fName=Bob&lName=Smith

次の例に示すように、request.getParameter メソッドを使用して、フォームまたはリクエスト URL から JSP に渡されたパラメータを取得します。

<%
  String firstName = request.getParameter("fName");
  String lastName = request.getParameter("lName");
  out.println("Welcome " + firstName + " " + lastName);
%>

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

response オブジェクト

response オブジェクトはデータをクライアントに送信します。

次の表で、response オブジェクトの一般的なメソッドをリストします。
メソッド
説明
addCookie(Cookie cookie)
レスポンスに Cookie を書き込みます。
addHeader(String name, 
String value)
ヘッダーを名前/値のペアとしてレスポンスに書き込みます。ヘッダーが存在する場合、この既存のヘッダー値に値が追加されます。
containsHeader
(String name)
指定されたレスポンスヘッダーが既に設定されている
場合は、true を返します。
sendError
(int status_code)
指定されたステータスコードを含むエラーレスポンスを
クライアントに送信します。
setHeader(String name, 
String value)
指定された名前と値で、レスポンスヘッダーを設定し
ます。このヘッダーが既に存在している場合、この値
でヘッダーの現在の値を置き換えます。

session オブジェクト

session オブジェクトは、特定のユーザーセッションに関する情報を保管します。デフォルトでは、JRun は Cookie を使用してセッションをトラッキングしますが、URL リライティングまたは非表示フォームフィールド、またはカスタムメソッドを使用して、セッションをトラッキングできます。Cookie 自体には、サーバサイドの session オブジェクトへのリクエストに一致する ID 番号 (セッション ID と呼ばれます) だけが含まれています。URL リライティングまたは非表示フォームフィールドを使用した場合、セッション ID は Cookie の値としてではなく、追加パス情報またはフォームフィールドとして渡されます。

ユーザーがアプリケーション内で別のページに移動しても、session オブジェクトに保管された変数は破棄されず、ユーザーセッションが継続している間は、保持されます。クライアントがリクエストでセッション ID を送り続けているかぎり、JRun はそのクライアントのユーザー特有のセッションデータにアクセスできます。

まだセッションを開始していないユーザーからアプリケーションのページがリクエストされた場合、JRun は session オブジェクトを作成します。セッションが期限切れになった場合や放棄された場合は、Web サーバにより session オブジェクトが廃棄されます。セッション使用の詳細については、 「セッションの操作」 を参照してください。

次の表は、session オブジェクトの一般的なメソッドをリストします。
メソッド
説明
getAttribute
(String name)
指定された名前を持つオブジェクトを返します。
オブジェクトが見つからない場合は、null を返します。
getAttributeNames
このセッションに含まれるオブジェクト名をすべて返します。
getCreationTime
グリニッジ標準時で 1970 年 1 月 1 日午前 0 時を基準に、セッションが作成された時刻をミリ秒単位で返します。
getId
セッションに対する固有の ID を返します。
getLastAccessedTime
このセッションに関連付けられている、最後にクライアントリクエストが行われた時刻を返します。時刻は、グリニッジ標準時で 1970 年 1 月 1 日午前 0 時を基準に、ミリ秒単位で返されます。
getMaxInactiveInterval
クライアントアクセス間で、JRun がこのセッションを
開いた状態にしておく最長時間を秒単位で返します。
removeAttribute
(String name)
セッションから属性と値を削除します。
setAttribute(String 
name, java.lang.Object 
value)
属性と、関連する値をセッションに書き込みます。

ある JSP が session オブジェクトに情報を書き込み、その後、クライアントからリクエストされた別の JSP がそれにアクセスできます。たとえば、ユーザーのショッピングカートに ID を割り当てておくと、クライアントがカートの内容を追加、削除、または修正したときにはいつでも、Web サイトからショッピングカートに関する情報にアクセスできます。この ID を session オブジェクトに保管できます。

次の例では、session オブジェクトに属性を設定します。

<%
  String firstName = request.getParameter("fName");
  String lastName = request.getParameter("lName");
  session.setAttribute("fName", firstName);
  session.setAttribute("lName", lastName);
  out.println("Welcome " + firstName + " " + lastName);
%>

次の例に示すように、同じセッション内の別の JSP がこの属性にアクセスできます。

<%
  String firstName = (String) session.getAttribute("fName");
  String lastName = (String) session.getAttribute("lName");
  out.println("あなたの注文は準備できました。" + firstName + " " + lastName);
%>

getAttribute がタイプ java.lang.Object のオブジェクトを返すので、getAttribute の戻り値をキャストする必要があります。キャストは、getAttribute から返されたオブジェクトをデスティネーションの形式 (この場合は文字列) に変換します。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。