 |
 |
●JSP−11.暗黙オブジェクト(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オブジェクトを返します。 |
| ServletRequest |
getRequest( ) |
requestオブジェクトを返します。 |
| ServletResponse |
getResponse( ) |
responseオブジェクトを返します。 |
| ServletConfig |
getServletConfig(
) |
ServletConfigオブジェクトを返します。 |
| ServletContext |
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")。 |
|
使用例 |
| pageContextオブジェクトの使用例について解説します。pageContextオブジェクトを使用し、requestスコープを持つデータを登録します。forwardメソッドを使用し、リクエストを指定したページ(exPageContext2.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>
|
|
<%@ 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 |
|
|
|
|
|
|
|
|
|
|
| 11.暗黙オブジェクト(pageContext) |
|
|
|
|
|
|
 |
|
 |
 |