Javaに関する様々な情報をご紹介します。

11暗黙オブジェクト(pageContext)

Javaに関する様々な情報をご紹介します。

暗黙オブジェクト(pageContext)

JSPでは、宣言せずに使用できるオブジェクトとして9つの暗黙オブジェクト(request, response, pageContext, session, application, config, page, exception)が用意されています。それぞれの暗黙オブジェクトにはJSPプログラムで頻繁に使用するメソッドが定義されています。ここでは、暗黙オブジェクトのうち、pageContextについて解説します。

メソッド

暗黙オブジェクトpageContextは、javax.servlet.jsp.PageContextクラスのオブジェクト変数です。このオブジェクトはJSPで使われるすべてのオブジェクトを管理することができます。すべての暗黙オブジェクトを参照するメソッド、すべてのスコープのデータを管理するメソッドを持っています。また、リクエストの転送を行うforward、includeメソッドも持っています。以下にpageContextオブジェクトで使用できる主なメソッドを紹介します。

戻り型 メソッド 説明
void forward(String) 引数に指定されたURLにリクエストを転送します。処理は転送されたURLに引き継がれます。URLは相対パスで指定することができます。forwardメソッドの前に、何らかの値を出力する処理を行ってはいけません。値を出力する処理が行われている場合は例外がスローされます。
void include(String) 引数に指定されたURLのリソースを実行し、処理結果を転送元に返します。URLは相対パスで指定することができます。
Exception getException( ) exceptionオブジェクトを返します。
JspWriter getOut( ) outオブジェクトを返します。
Object getPage( ) pageオブジェクトを返します。
Servlet
Request
getRequest( ) requestオブジェクトを返します。
Servlet
Response
getResponse( ) responseオブジェクトを返します。
Servlet
Config
getServletConfig( ) ServletConfigオブジェクトを返します。
Servlet
Context
getServletContext( ) ServletContextオブジェクトを返します。
HttpSession getSession( ) sessionオブジェクトを返します。
Object findAttribute(String) 引数に指定されたデータ名に対するデータ値を返します。データ名はpageスコープ、requestスコープ、sessionスコープ、applicationスコープの順に検索されます。該当するデータ名がない場合はNullが返されます。
Object getAttribute(String, int) 第一引数にデータ名、第二引数にスコープを指定して対応するデータ値を返します。第二引数のスコープの指定にはPageContextクラスで定義されている定数を使用します("PAGE_SCOPE ", "REQUEST_SCOPE", "SESSION_SCOPE", "APPLICATION_SCOPE")。該当するデータ名がない場合はNullが返されます。
Enumeration getAttributeNamesInScope(int) 引数に指定されたスコープに属するすべてのデータ名をEnumerationオブジェクトで返します。スコープの指定にはPageContextクラスで定義されている定数を使用します("PAGE_SCOPE ", "REQUEST_SCOPE", "SESSION_SCOPE", "APPLICATION_SCOPE")。
int getAttributesScope(String) 引数に指定されたデータ名が属するスコープを返します。該当するデータ名がない場合は0が返されます。
void removeAttribute(String, int) 第一引数にデータ名、第二引数にスコープを指定して対応するデータ値を削除します。該当するデータ名がない場合は何も行いません。スコープの指定にはPageContextクラスで定義されている定数を使用します("PAGE_SCOPE ", "REQUEST_SCOPE", "SESSION_SCOPE", "APPLICATION_SCOPE")。
void setAttribute(String, Object, int) 第一引数にデータ名、第二引数にデータ値、第三引数にスコープを指定して、指定されたスコープに属するデータ値を登録します。スコープの指定にはPageContextクラスで定義されている定数を使用します("PAGE_SCOPE ", "REQUEST_SCOPE", "SESSION_SCOPE", "APPLICATION_SCOPE")。

※ その他のメソッドについてはAPIリファレンスをご参照ください。

使用例

pageContextオブジェクトの使用例について解説します。pageContextオブジェクトを使用し、requestスコープを持つデータを登録します。forwardメソッドを使用し、リクエストを指定したページ(exPageContext2.jsp)に転送します。転送先ページで、前ページで登録されたデータを表示します。

exPageContext.jsp

<%@ page contentType="text/html; charset=windows-31j"%>

<html>
<body>

<%
    String name1 = "Java";
    String name2 = "太郎";

    //(1)pageContextオブジェクトを使用し、requestスコープを
    //   持つデータ値を登録しています。requestスコープの
    //   データ値の登録は、普通requestオブジェクトを使用しますが、
    //   ここでは、あえてpageContextオブジェクトを使用しています。
    pageContext.setAttribute("name1", name1,
    PageContext.REQUEST_SCOPE);
    pageContext.setAttribute("name2", name2,
    PageContext.REQUEST_SCOPE);

    //(2)forwardメソッドを使用し、リクエストを引数に
    //   指定したページに転送します。
    pageContext.forward("/exPageContext2.jsp");
%>

</body>
</html>

exPageContext2.jsp

<%@ page contentType="text/html; charset=windows-31j"%>

<HTML>
<BODY>

<%
    out.println("name1:");

    //(1)requestオブジェクトのgetAttributeメソッドを使用し、前ページで
    //    登録されたrequestスコープを持つデータを取得します。
    out.println(request.getAttribute("name1"));
    out.println("<BR>");
    out.println("name2:");

    //(2)requestオブジェクトのgetAttributeメソッドを使用し、前ページで
    //   登録されたrequestスコープを持つデータを取得します。
    out.println(request.getAttribute("name2"));
%>

</BODY>
</HTML>

【実行結果】JSPプログラムの実行方法に関しては、Javaの道:Tomcat(プログラム配置・実行)を参照してください。

Javaの道_pageContext_実行結果

11暗黙オブジェクト(pageContext)