JSPの暗黙オブジェクト:page、config、pageContext、exceptionの活用

pageオブジェクトの機能

このオブジェクトはJSPページのインスタンスを参照するもので、thisと同等の役割を果たします。java.lang.Objectのインスタンスです。

主なメソッド

メソッド説明
Class<?> getClass()オブジェクトのクラスを取得
String toString()オブジェクトを文字列に変換
int hashCode()ハッシュコードを返す

実装例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>pageオブジェクトの動作確認</title>
</head>
<body>
  <p>クラス名:<%= page.getClass().getName() %></p>
  <p>ハッシュコード:<%= page.hashCode() %></p>
  <p>文字列表現:<%= page.toString() %></p>
</body>
</html>

configオブジェクトの利用

javax.servlet.ServletConfigのインスタンスで、サーブレットの初期パラメータを管理します。

基本メソッド

メソッド説明
String getServletName()サーブレット名を取得
String getInitParameter(String name)初期パラメータ値を取得

実装例

@WebServlet("/ConfigSample")
public class ConfigSampleServlet extends HttpServlet {
  protected void doGet(HttpServletRequest req, HttpServletResponse res) 
      throws ServletException, IOException {
    
    res.setContentType("text/html;charset=UTF-8");
    PrintWriter writer = res.getWriter();
    writer.println("サーブレット名: " + getServletConfig().getServletName());
  }
}

pageContextオブジェクトの役割

ページ全体を管理するオブジェクトで、sessionapplicationなどの他のオブジェクトにアクセスできます。

主な操作メソッド

メソッド説明
Object getAttribute(String name, int scope)指定スコープの属性を取得
void setAttribute(String name, Object value, int scope)指定スコープに属性を設定
void forward(String url)リクエストを別のページに転送

スコープ管理の実例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>スコープ管理のテスト</title>
</head>
<body>
  <% 
    request.setAttribute("scope_data", "リクエストスコープ");
    session.setAttribute("scope_data", "セッションスコープ");
  %>
  
  <p>リクエストスコープ: <%= pageContext.getAttribute("scope_data", PageContext.REQUEST_SCOPE) %></p>
  <p>セッションスコープ: <%= pageContext.getAttribute("scope_data", PageContext.SESSION_SCOPE) %></p>
</body>
</html>

exceptionオブジェクトのエラー処理

エラーページとして定義された場合にのみ利用可能です。

エラーページの設定

<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>エラーメッセージ</title>
</head>
<body>
  <p>エラー内容: <%= exception.getMessage() %></p>
</body>
</html>

エラー発生ページの例

<%@ page errorPage="error.jsp" %>
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>エラー発生テスト</title>
</head>
<body>
  <% int result = 10 / 0; %>
</body>
</html>

タグ: JSP servlet-api implicit-objects web-application

8月12日 09:18 投稿