暗黙オブジェクト(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(プログラム配置・実行)を参照してください。

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