JSP オブジェクト

このセクションでは、JSP 内からアクセス可能なオブジェクトについて説明します。これらのオブジェクトを使用して JSP 内から基本的なタスクを実行できます。次のようなオブジェクトがあります。


メモ

この章では、これらのオブジェクトの概要についてのみ説明します。オブジェクトと そのメソッドの詳細については、HTML バージョンの Java サーブレット API のマニュ アルを参照してください。これらの HTML ファイルは、使用中の JRun インストール ディレクトリにある docs/api ディレクトリに配置されています。各オブジェクトは JSP オブジェクト名ではなく、次の表にある Java サーブレット API オブジェクトの タイプにより識別されます。


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

次の表は、各 JSP オブジェクトの一覧で、これらのオブジェクトに対応するサーブレットAPI オブジェクトのタイプをまとめたものです。
JSP オブジェクト
Java サーブレット 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 
 
要求元クライアントのために作成されたセッション オブジェクト

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

JRun により JSP が呼び出されると、前のセクションの表に示されている JSP オブジェクトがすべて作成されます。オブジェクト名とオブジェクト メソッド、またはフィールドを参照するだけで、JSP でこれらのオブジェクトにアクセスできます。


メモ

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


JSP オブジェクトの使用

Java オブジェクトへのインターフェイスは、オブジェクトの public メソッドとフィールドから構成されています。したがって、この章で説明するオブジェクトを使用するには、オブジェクトのメソッドやフィールドを参照してください。

オブジェクトのメソッド、またはフィールドを参照するには、「ドット」アドレス メカニズムを使用します。つまり、オブジェクト名に続けてドット (ピリオド) を入力してから、メソッド名、またはフィールド名を指定します。次の例ではこの構文を使用して、JSP の出力に文字列を書き込んでいます。

out.println("Greetings from my page!");

この例の場合、オブジェクト名は out で、メソッドは println です。

次の例では、request オブジェクトを使用して、JSP への HTTP 要求に含まれている fName パラメータと lName パラメータの値が取得されます。次に、out オブジェクトを使用して、これらの値がクライアントに書き込まれます。

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

次の例では、要求からユーザ名が取得され、この名前が JSP の session オブジェクトに書き込まれます。これにより、同じセッションにある別の JSP から情報にアクセスできるようになります。この例は、1 つの JSP によりサービスされているすべてのページでクライアント名を表示するようアプリケーションをカスタマイズする方法を示しています。

最初の JSP の greeting.jsp では、ユーザ名が session オブジェクトに書き込まれます。

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

メモ

クライアントから渡されたパラメータにアクセスするために使用される request メソッドは、getParametersetParameter により呼び出されます。しかし、session オブジェクトで使用されるメソッドは getAttributesetAttribute により呼び 出されます。パラメータは、文字列としてクライアントへの受け渡しが行われます。 属性は、サーバー側スクリプト間でオブジェクトとして渡されるオブジェクトで、サー ブレットなどがあります。


session オブジェクトへの情報の書き込みが完了すると、同じセッションにある別の JSP からこの情報へアクセスできるようになります。たとえば、注文の合計を生成する JSP には、次のような行が含まれます。

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

getAttribute は常に java.lang.Object タイプのオブジェクトを返すので、
getAttribute の戻り値をタイプ変換する必要があります。タイプ変換によって、getAttribute から返されたオブジェクトは、送信先の形式に変換されます。この場合は文字列に変換されます。