[Java] JSP暗黙オブジェクト page と pageContext の違い

JSPではいくつかの暗黙オブジェクトが定義されています。

その中に「page」オブジェクトと「pageContext」オブジェクトというものがありますが、一見違いがよく分からないので違いを調べてみました。

pageオブジェクト

pageオブジェクトは、Object型のオブジェクトで、JSPがサーブレットに変換された後のサーブレットのインスタンス自身を表すオブジェクトです。

JPSがサーブレットに変換された後のJavaコードを見ると、以下のような部分があります。

final java.lang.Object page = this;

つまり、サーブレットオブジェクトそのものということですね。

pageContextオブジェクト

一方、pageContextオブジェクトは、javax.servlet.jsp.PageContext型のオブジェクトで、JSPページに関連した様々な情報へアクセスするためのメソッドなどが定義されています。

例えば、JSPがサーブレットに変換された後のJavaコードを見ると、以下のような部分があります。

final javax.servlet.jsp.PageContext pageContext;
...
pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();

これを見ると、その他の暗黙オブジェクトであるapplicationオブジェクト、configオブジェクト、sessionオブジェクトなどはpageContextオブジェクトから取得されていることが分かります。

ということで、JSPファイルの中で各種の情報にアクセスする場合はpageContextを使うと便利だということですね。
そして、使用頻度は低いですがJSPファイルの中で何らかの理由があってサーブレット自身を参照したい場合のためにpageオブジェクトという手段が用意されている、ということのようです。

参考

PageContext (Java(TM) EE 7 Specification APIs)


Pocket
Bookmark this on Yahoo Bookmark

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>