タイトル
 メニューにないコーナーはTopからいけます
TOPJavaJSP → This Page

JSP 暗黙オブジェクト-2

pageContext オブジェクト

JSP で使われる全オブジェクトを管理することができる。
メソッド 戻り型 概要
findAttribute(String) Object 指定された名前に対するデータ値を返す
データは page スコープ、request スコープ、session スコープ、application スコープの順に検索される
該当するデータがない場合は null が返される
forward(String) void 指定された URI にリダイレクトする
このメソッドの前に何らかの値を出力処理が行われている場合はエラーとなる
getAttribute(String, int)
(名前, スコープ)
Object 指定された名前、スコープに対するデータ値を返す
該当するデータがない場合は null が返される
getAttributeNamesInScope(int) Enumeration 指定されたスコープの全データ名を返す
getAttributesScope(String) int 指定された名前のデータが属するスコープを返す
該当するデータがない場合は 0 が返される
getException() Exception exception オブジェクトを返す
getOut() JspWriter out オブジェクトを返す
getPage() Object page オブジェクトを返す
getRequest() ServletRequest request オブジェクトを返す
getResponse() ServletResponse response オブジェクトを返す
getServletConfig() ServletConfig ServletConfig オブジェクトを返す
getServletContext() ServletContext ServletContext オブジェクトを返す
getSession() HttpSession session オブジェクトを返す
include(String) void 指定された URI のリソースを実行し、処理結果を転送元に戻す
removeAttribute(String, int)
(名前, スコープ)
void 指定された名前、スコープに対するデータを削除する
該当するデータがない場合は何もしない
setAttribute(String, Object, int)
(データ名, データ値, スコープ)
void 指定された名前、スコープに対するデータを設定する

スコープは以下の定数が定義されている。
・pageContext.APPLICATION_SCOPE
・pageContext.SESSION_SCOPE
・pageContext.REQUEST_SCOPE
・pageContext.PAGE_SCOPE

例
<%
	pageContext.setAttribute("userid", "101102", pageContext.SESSION_SCOPE);
	pageContext.setAttribute("value", 100, pageContext.REQUEST_SCOPE);
	pageContext.include("/include.jsp");
%>

request オブジェクト

メソッド 戻り型 概要
getAttribute(String) void 指定された名前のリクエスト属性を返す
getAttributeNames() Enumeration 全てのリクエスト属性名を返す
getAuthType() String 認証の種類を返す
getCookies() Cookie[] 全てのクッキー情報を返す
getContentLength() int データ本体のバイト長を返す
getContextPath() String コンテキストパスを返す
getHeader(String) String 指定された名前のヘッダ情報値を返す
ヘッダーが存在しない場合は null が返される
getHeaderNames() Enumeration 全てのヘッダ情報名を返す
指定された名前のヘッダ情報値を返す
getHeaders(String) Enumeration 指定された名前のヘッダ情報値を返す
getLocale() Locale ロケールを返す
getMethod() String HTTP メソッドの種類を返す
getPathInfo() String 拡張パス情報を返す
getParameter(String) String 指定された名前のリクエストパラメータ値を返す
ただし、1つのキーで複数の値を持つ場合(xxx.jsp?prm=aaa&prm=bbb)は最初の値のみ返す
リクエストパラメータが存在しない場合は null が返される
getParameterMap() Map 全てのリクエストパラメータを Map オブジェクトで返す
getParameterNames() Enumeration 全てのリクエストパラメータ名を返す
getParameterValues(パラメータ名) String[] 指定された名前のリクエストパラメータ値を文字列配列として返す
1つのキーで複数の値を持つ場合(xxx.jsp?prm=aaa&prm=bbb)に用いる
リクエストパラメータが存在しない場合は null が返される
getRemoteAddr() String クライアントの IP アドレスを返す
getRemoteUser() String ログインユーザー名を返す
setCharacterEncoding(String) void リクエストパラメータ値をエンコードするエンコード方式を指定
リクエストパラメータ値を取得する前に指定する必要がある
getServletPath() String サーブレットパスを返す
isRequestedSessionIdFromCookie() boolean セッション ID が Cookie 経由で授受しているかを返す
isUserInRole(String) boolean カレントユーザーが指定ロール権限を持っているかを返す
removeAttribute(String) void リクエスト属性を削除
setAttribute(String, Object)
(パラメータ名, パラメータ値)
void 指定されたパラメータ名に指定されたパラメータ値を設定
setCharacterEncoding(String) void リクエスト情報の文字コードを設定

例 リクエストデータを一覧表示する
<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.*" %>
<html>
<body>
<table border="1">
<tr>
	<th>キー名</th>
	<th>値</th>
</tr>
<%
request.setCharacterEncoding("Shift_JIS");
Enumeration objEnm = request.getParameterNames();
while (objEnm.hasMoreElements())
{
	String strKeyName = (String)(objEnm.nextElement());
	String[] strValue = request.getParameterValues(strKeyName);
	String strValues = "";
	for (int i = 0; i < strValue.length; i++)
	{
		if (i != 0)
		{
			strValues += ",";
		}
		strValues += strValue[i];
	}
%>
	<tr>
		<td><%= strKeyName %></td>
		<td><%= strValues %></td>
	</tr>
<%
}
%>
</table>
</body>
</html>


例 ヘッダ情報を一覧表示する
<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.*" %>
<html>
<table border="1">
<%
	Enumeration objEnm = request.getHeaderNames();
	while(objEnm.hasMoreElements())
	{
		String strKeyName = (String)(objEnm.nextElement());
%>
	<tr>
	<th nowrap><%= strKeyName %></th>
	<td nowrap><%= request.getHeader(strKeyName) %></td>
	</tr>
<%
	}
%>
</table>
</html>

response オブジェクト

レスポンス(応答)情報を制御する際に用いる
メソッド 戻り型 概要
addCookie(Cookie) void 指定した Cookie オブジェクトをクライアントに返す
呼び出すごとに Cookie オブジェクトが追加され、複数の Cookie オブジェクトを指定することが可能
addDateHeader(String, long)
(ヘッダ名, ヘッダ値)
void 指定された名前のヘッダを指定値(日付型)で追加
addHeader(String, String)
(ヘッダ名, ヘッダ値)
void 指定された名前のヘッダを指定値(文字列型)で追加
addIntHeader(String, int)
(ヘッダ名, ヘッダ値)
void 指定された名前のヘッダを指定値(数値型)で追加
containsHeader(String) boolean 指定された名前のヘッダがすでに発行されているかどうかを返す
encodeURL(String) String URLにセッションIDを付加
encodeRedirectURL(String) String URLにセッションIDを付加(sendRedirect メソッド用)
isCommitted() boolean ヘッダが出力済みかどうかを返す
sendError(int) void 指定された HTTP プロトコルのエラーステータスコードをクライアントに返す
sendRedirect(String) void 指定 URI にリダイレクト
setContentLength(int) void 指定された長さにコンテンツ長をセット
setDateHeader(String, long) void 指定のヘッダ名、ヘッダ値(日付型)よりヘッダーデータをクライアントに返す
ヘッダー値は 1970/01/01 からの経過時間をミリ秒で指定
setHeader(String, String) void 指定のヘッダ名、ヘッダ値(文字列型)よりヘッダーデータをクライアントに返す
setDateHeader(String, long) void 指定のヘッダ名、ヘッダ値(日付型)よりヘッダーデータをクライアントに返す
setIntHeader(String, int) void 指定のヘッダ名、ヘッダ値(数値型)よりヘッダーデータをクライアントに返す
setStatus(int) void HTTP ステータスコードをクライアントに返す

例 クライアントのキャッシュを無効化

<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.*" %>
<%
	Calendar objCal1 = Calendar.getInstance();
	Calendar objCal2 = Calendar.getInstance();
	objCal2.set(1970, 0, 1, 0, 0, 0);
	response.setDateHeader("Last-Modified", objCal1.getTime().getTime());
	response.setDateHeader("Expires", objCal2.getTime().getTime());
	response.setHeader("progma", "no-cache");
	response.setHeader("Cache-Control", "no-cache");
%>

session オブジェクト

セッション内で共有可能な情報を管理するために用いる。
ただし、page ディレクティブの session 属性が false の場合は使用出来ない。
(デフォルトは true)
メソッド 戻り型 概要
getAttribute(String) Object 指定された名前のセッション属性値を返す
getAttributeNames() Enumeration 全てのセッション属性名を返す
getCreationTime() long セッションの生成時刻を返す
getId() String セッションを一意に識別するセッション ID を返す
getLastAccessedTime() long セッションへの最終アクセス時刻を返す
getMaxInactiveInterval() int セッションのタイムアウト時間を秒で返す
getServletContext() ServletContext セッションが属している ServletContext オブジェクトを返す
invalidate() void セッションを破棄
isNew() boolean 新しく生成されたセッションかどうかを返す
removeAttribute(String) void 指定された名前のセッション属性を削除
setAttribute(String, Object)
(セッション属性名, セッション属性値)
void 指定された属性名に指定された属性値を設定
setMaxInactiveInterval(int) void セッションのタイムアウトを指定秒に設定

例 2回目以降のアクセスを検知

<%@ page contentType="text/html;charset=Shift_JIS" %>
<%
	if (session.getAttribute("comeon") != null)
	{
		out.print("アクセス済みです");
		out.close();
	}
	session.setAttribute("comeon", "1");
%>
<html>
<body>
	一回目です
</body>
</html>

更新履歴

2013/12/09 記述ミス修正
2007/12/01 Javaのコーナー細分化に伴い、URL の変更


TOPJavaJSP → This Page
Valid CSS!