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)