| 暗黙オブジェクト | オブジェクト型 | 概要 |
|---|---|---|
| application | javax.servlet.ServletContext | コンテナ単位に生成され、ユーザー間で共有可能な情報を管理 |
| config | javax.servlet.ServletConfig | 初期化パラメータにアクセスする手段を提供 |
| exception | java.lang.Throwable | 例外(エラー)情報を管理 |
| out | javax.servlet.jsp.JspWriter | クライアントにコンテンツを出力する手段を提供 |
| page | javax.servlet.jsp.HttpJspPage |
JSPページそのもの JSPページ内で使用することはほとんどない |
| pageContext | javax.servlet.jsp.PageContext |
各暗黙オブジェクトにアクセスする手段を提供 JSPページ内で使用することはほとんどない |
| request | javax.servlet.http.HttpServletRequest | リクエスト(要求)情報にアクセスする手段を提供 |
| response | javax.servlet.http.HttpServletResponse | レスポンス(応答)情報を制御する手段を提供 |
| session | javax.servlet.http.HttpSession | セッション内で共有可能な情報を管理 |
| メソッド | 戻り型 | 概要 |
|---|---|---|
| getAttribute(String) | Object |
指定された名前のアプリケーション属性値を返す 属性がない場合は null を返す |
| getAttributeNames() | Enumeration | 全てのアプリケーション属性名を返す |
| getContext(String) | ServletContext | 指定された URI の ServletContext オブジェクトを返す |
| getInitParameter(String) | String |
指定された名前の初期化パラメータを返す パラメータがない場合は null を返す |
| getInitParameterNames() | Enumeration |
全ての初期化パラメータ名を返す 初期化パラメータ名がない場合は空の Enumeration オブジェクトを返す |
| getMajorVersion() | int | サーブレットのメジャーバージョンを返す |
| getMinorVersion() | int | サーブレットのマイナーバージョンを返す |
| getRealPath(String) | String | 指定された仮想相対パスを仮想絶対パスに変換して返す |
| getServerInfo() | String | J2EE コンテナの名前、バージョンを返す |
| log(String) | void | 指定されたメッセージを J2EE コンテナ標準のログに記録 |
| log(String, Throwable) | void | 指定されたメッセージと例外情報を J2EE コンテナ標準のログに記録 |
| removeAttribute(String) | void | 指定された名前のアプリケーション属性を application スコープから削除 |
| setAttribute(String, Object) (属性名, 属性値) |
void | 指定された名前のアプリケーション属性に指定された属性値を application スコープに設定 |
例 簡易アクセスカウンタ(ただし J2EE コンテナを再起動させるとデータはクリアされる)
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%
String strCount = application.getAttribute("count");
if (strCount == null)
{
strCount = "1";
}
else
{
strCount = Integer.toString(Integer.parseInt(strCount) + 1);
}
application.setAttribute("count", strCount);
%>
<html>
<body>
アクセス数は<%= strCount %>です
</body>
</html>
|
例 初期化パラメータよりページの作者名を取得して表示
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%
String strAuthName = application.getInitParameter("authName");
%>
<html>
<body>
このページの作者は<%= strAuthName %>です
</body>
</html>
web.xml
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>authName</param-name>
<param-value>みっちー</param-value>
</context-param>
</web-app>
|
| メソッド | 戻り型 | 概要 |
|---|---|---|
| getInitParameter(String) | String |
指定された名前の初期化パラメータを返す パラメータがない場合は null を返す |
| getInitParameterNames() | Enumeration |
全ての初期化パラメータ名を返す 初期化パラメータ名がない場合は空の Enumeration オブジェクトを返す |
| getServletContext() | ServletContext | JSPが実行されている ServletContext オブジェクトを返す |
| getServletName() | String | 現在のサーブレット論理名(servlet-name 要素)を返す |
例 初期化パラメータよりページのタイトルを取得して表示
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%
String strTitle = (String)(config.getInitParameter("pageTitle"));
%>
<html>
<body>
<h1><%= strTitle %></h1>
</body>
</html>
web.xml
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>menu</servlet-name>
<jsp-file>/java/menu.jsp</jsp-file>
<init-param>
<param-name>pageTitle</param-name>
<param-value>Java のコーナー</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>menu</servlet-name>
<url-pattern>/java/menu.jsp</url-pattern>
</servlet-mapping>
</web-app>
|
| メソッド | 戻り型 | 概要 |
|---|---|---|
| getMessage() | String | 詳細なエラーメッセージを返す |
| getLocalizedMessage() | String | 地域対応されたエラーメッセージを返す |
| printStackTrace() | void | スタックトレースを出力 |
| toString() | String | 例外クラス名とエラーメッセージを返す |
例 calc.jspページで例外が発生した場合に error.jspにリダイレクトする calc.jsp <%@ page contentType="text/html;charset=Shift_JIS" errorPage="error.jsp" %> <html> <body> <%= 10 + "abc"; %> </body> </html> error.jsp <%@ page contentType="text/html;charset=Shift_JIS" isErrorPage="true" %> <html> <body> <h1>エラーが発生しました</h1> <pre> <%= exception.toString() %> </pre> </body> </html> |
| メソッド | 戻り型 | 概要 |
|---|---|---|
| clear() | void |
バッファのデータをクリア バッファの内容が出力済み、バッファ処理が無効の場合はエラー |
| clearBuffer() | void |
バッファのデータをクリア バッファの内容が出力済みでも使用可 |
| close() | void | 出力を終了 |
| flush() | void | バッファの内容を強制的に出力 |
| getBufferSize() | int |
現在確保されているバッファのサイズを返す バイト単位 |
| getRemaining() | int |
未使用バッファのサイズを返す バイト単位 |
| isAutoFlush() | boolean |
true の場合、出力サイズがバッファを超えたタイミングで自動出力 false の場合はエラー |
| newLine() | void | 改行文字を出力 Windows では \n、UNIX では \n\r |
| print(文字列) | void | 文字列を出力 |
| println(文字列) | void | 文字列の末尾に改行を付けて出力 |
| メソッド | 戻り型 | 概要 |
|---|---|---|
| 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.setAttribute("userid", "101102", pageContext.SESSION_SCOPE);
pageContext.setAttribute("value", 100, pageContext.REQUEST_SCOPE);
pageContext.include("/include.jsp");
%>
|
| メソッド | 戻り型 | 概要 |
|---|---|---|
| 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>
<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>
<%
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>
|
| メソッド | 戻り型 | 概要 |
|---|---|---|
| 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");
%>
|
| メソッド | 戻り型 | 概要 |
|---|---|---|
| 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 の変更