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

JSP 暗黙オブジェクト-1

暗黙オブジェクトとは

暗黙オブジェクトは JSP ページ内のスクリプトレットや式構文内で事前の宣言を行うことなく
使用することが可能なオブジェクトである。

暗黙オブジェクトの種類

暗黙オブジェクトオブジェクト型概要
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 セッション内で共有可能な情報を管理

application オブジェクト

アプリケーション単位の共通情報を管理するために用いる。
メソッド 戻り型 概要
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>

アプリケーションルートの配下に /WEB-INF/web.xml というファイルを配置することで
アプリケーションに共通な初期化パラメータを設定することが可能である。
このファイルをデプロイメント・ディスクリプタ(もしくは配備記述子)という。
例 初期化パラメータよりページの作者名を取得して表示
<%@ 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>

config オブジェクト

デプロイメント・ディスクリプタで定義された初期化パラメータにアクセスするために用いる。
メソッド 戻り型 概要
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>

exception オブジェクト

ページ内で発生した例外(エラー)情報参照するために用いる。
ただし、page ディレクティブの isErrorPage 属性が true になっている必要がある。
メソッド 戻り型 概要
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>

out オブジェクト

クライアントにコンテンツを出力するために用いる。
メソッド 戻り型 概要
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 文字列の末尾に改行を付けて出力

更新履歴

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


TOPJavaJSP → This Page
Valid CSS!