クラス PageContext
PageContext は、JspContext を継承して、サーブレット環境で JSP テクノロジーを使用する場合に役立つコンテキスト情報を提供します。
PageContext インスタンスは、JSP ページに関連付けられたすべての名前空間へのアクセスを提供し、いくつかのページ属性へのアクセスと、実装の詳細の上位レイヤーへのアクセスを提供します。暗黙的なオブジェクトは、pageContext に自動的に追加されます。
PageContext
クラスは、準拠する JSP エンジンのランタイム環境によって、実装に依存する実装を提供するために拡張されるように設計された抽象クラスです。PageContext インスタンスは、JspFactory.getPageContext() メソッドを呼び出すことによって JSP 実装クラスによって取得され、JspFactory.releasePageContext() を呼び出すことによって解放されます。
PageContext、JspFactory、その他のクラスを JSP ページ実装オブジェクト内で使用する方法の例は、他の場所で提供されています。
PageContext は、ページ / コンポーネントの作成者およびページ実装者に次のような多くの機能を提供します。
- さまざまなスコープの名前空間を管理する単一の API
- さまざまなパブリックオブジェクトにアクセスするための多数の便利な API
- 出力用に JspWriter を取得するメカニズム
- ページごとにセッションの使用を管理するメカニズム
- ページ指示属性をスクリプト環境に公開するメカニズム
- アプリケーション内の他のアクティブなコンポーネントに現在のリクエストを転送または含めるメカニズム
- エラーページ例外処理を処理するメカニズム
コンテナー生成コード向けのメソッド
一部のメソッドは、JSP ページ作成者または JSP タグライブラリ作成者によって作成されたコードではなく、コンテナーによって生成されたコードによって使用されることを目的としています。
ライフサイクルをサポートするメソッドは initialize()
および release()
です
以下のメソッドにより、 ネストされた JspWriter ストリームの管理がタグ拡張機能を実装できるようになります: pushBody()
JSP 作成者向けのメソッド
次のメソッドは、暗黙のオブジェクトへの便利なアクセスを提供します: getException()
、getPage()
getRequest()
、getResponse()
、getSession()
、getServletConfig()
、getServletContext()
。
次のメソッドは、 転送、包含、エラー処理のサポートを提供します: forward()
、include()
、handlePageException()
。
フィールドのサマリー
フィールド修飾子と型フィールド説明static final StringSE
ServletContext を PageContext 名前テーブルに保存するために使用される名前。static final int
アプリケーションスコープ: 名前付き参照は、再生されるまで ServletContext で利用可能です。static final StringSE
ServletConfig を PageContext 名前テーブルに保存するために使用される名前。static final StringSE
ServletRequest 属性リストおよび PageContext 名前テーブルにキャッチされていない例外を格納するために使用される名前。static final StringSE
現在の JspWriter を PageContext 名前テーブルに保存するために使用される名前。static final StringSE
この PageContext の名前テーブルにサーブレットを格納するために使用される名前。static final int
ページ範囲: (これがデフォルトです)名前付き参照は、現在の Servlet.service() 呼び出しから戻るまで、この PageContext で利用可能です。static final StringSE
この PageContext を独自の名前テーブルに保存するために使用される名前。static final StringSE
ServletRequest を PageContext 名前テーブルに保存するために使用される名前。static final int
リクエストスコープ: 名前付き参照は、現在のリクエストが完了するまで、サーブレットに関連付けられた ServletRequest から利用可能のままです。static final StringSE
ServletResponse を PageContext 名前テーブルに保存するために使用される名前。static final StringSE
HttpSession を PageContext 名前テーブルに保存するために使用される名前。static final int
セッションスコープ(このページがセッションに参加している場合のみ有効): HttpSession が無効化されるまで、名前付き参照は、サーブレットに関連付けられた HttpSession(存在する場合)から引き続き利用可能です。コンストラクターの概要
コンストラクターメソッドのサマリー
修飾子と型メソッド説明abstract void
このメソッドは、現在の ServletRequest および ServletResponse をアプリケーション内の別のアクティブなコンポーネントにリダイレクトまたは「転送」するために使用されます。エラー情報への便利なアクセスを提供します。abstract ExceptionSE
例外オブジェクトの現在の値(例外)。abstract ObjectSE
getPage()
ページオブジェクトの現在の値(サーブレット環境では、これは jakarta.servlet.Servlet のインスタンスです)。abstract ServletRequest
リクエストオブジェクトの現在の値(ServletRequest)。abstract ServletResponse
レスポンスオブジェクトの現在の値(ServletResponse)。abstract ServletConfig
ServletConfig インスタンス。abstract ServletContext
ServletContext インスタンス。abstract HttpSession
セッションオブジェクトの現在の値(HttpSession)。abstract void
このメソッドは、この JSP の指定されたエラーページに例外を転送することにより、未処理の「ページ」レベルの例外を処理することを目的としています。abstract void
このメソッドは、この JSP の指定されたエラーページに例外を転送することにより、未処理の「ページ」レベルの例外を処理することを目的としています。abstract void
指定されたリソースが、呼び出しスレッドによって処理されている現在の ServletRequest および ServletResponse の一部として処理されるようにします。abstract void
指定されたリソースが、呼び出しスレッドによって処理されている現在の ServletRequest および ServletResponse の一部として処理されるようにします。abstract void
initialize
(Servlet servlet, ServletRequest request, ServletResponse response, StringSE errorPageURL, boolean needsSession, int bufferSize, boolean autoFlush) 初期化メソッドは、初期化されていない PageContext を初期化するために呼び出され、JSP 実装クラスが _jspService() メソッド内で受信リクエストとレスポンスを処理するために使用できるようにします。pushBody()
新しい BodyContent オブジェクトを返し、現在の「出力」JspWriter を保存し、PageContext のページスコープ属性ネームスペースの "out" 属性の値を更新します。abstract void
release()
このメソッドは、PageContext の内部状態を「リセット」し、すべての内部参照を解放し、initialize() の以降の呼び出しによる潜在的な再利用のために PageContext を準備します。クラス jakarta.servlet.jsp.JspContext から継承されたメソッド
findAttribute, getAttribute, getAttribute, getAttributeNamesInScope, getAttributesScope, getELContext, getOut, popBody, pushBody, removeAttribute, removeAttribute, setAttribute, setAttribute
フィールドの詳細
PAGE_SCOPE
public static final int PAGE_SCOPEページ範囲: (これがデフォルトです)名前付き参照は、現在の Servlet.service() 呼び出しから戻るまで、この PageContext で利用可能です。- 関連事項:
REQUEST_SCOPE
public static final int REQUEST_SCOPEリクエストスコープ: 名前付き参照は、現在のリクエストが完了するまで、サーブレットに関連付けられた ServletRequest から利用可能のままです。- 関連事項:
SESSION_SCOPE
public static final int SESSION_SCOPEセッションスコープ(このページがセッションに参加している場合のみ有効): HttpSession が無効化されるまで、名前付き参照は、サーブレットに関連付けられた HttpSession(存在する場合)から引き続き利用可能です。- 関連事項:
APPLICATION_SCOPE
public static final int APPLICATION_SCOPEアプリケーションスコープ: 名前付き参照は、再生されるまで ServletContext で利用可能です。- 関連事項:
PAGE
この PageContext の名前テーブルにサーブレットを格納するために使用される名前。- 関連事項:
PAGECONTEXT
この PageContext を独自の名前テーブルに保存するために使用される名前。- 関連事項:
REQUEST
ServletRequest を PageContext 名前テーブルに保存するために使用される名前。- 関連事項:
RESPONSE
ServletResponse を PageContext 名前テーブルに保存するために使用される名前。- 関連事項:
CONFIG
ServletConfig を PageContext 名前テーブルに保存するために使用される名前。- 関連事項:
SESSION
HttpSession を PageContext 名前テーブルに保存するために使用される名前。- 関連事項:
OUT
現在の JspWriter を PageContext 名前テーブルに保存するために使用される名前。- 関連事項:
APPLICATION
ServletContext を PageContext 名前テーブルに保存するために使用される名前。- 関連事項:
EXCEPTION
ServletRequest 属性リストおよび PageContext 名前テーブルにキャッチされていない例外を格納するために使用される名前。- 関連事項:
コンストラクターの詳細
PageContext
public PageContext()唯一のコンストラクター。(サブクラスコンストラクターによる呼び出しの場合、通常は暗黙的です。)
メソッドの詳細
initialize
public abstract void initialize(Servlet servlet, ServletRequest request, ServletResponse response, StringSE errorPageURL, boolean needsSession, int bufferSize, boolean autoFlush) throws IOExceptionSE, IllegalStateExceptionSE, IllegalArgumentExceptionSE 初期化メソッドは、初期化されていない PageContext を初期化するために呼び出され、JSP 実装クラスが _jspService() メソッド内で受信リクエストとレスポンスを処理するために使用できるようにします。
このメソッドは、通常、状態を初期化するために JspFactory.getPageContext() から呼び出されます。
このメソッドは、初期 JspWriter を作成し、ページスコープの "out" 名をこの新しく作成されたオブジェクトに関連付けるために必要です。
このメソッドは、ページまたはタグライブラリの作成者が使用しないでください。
- パラメーター:
servlet
- この PageContext に関連付けられているサーブレットrequest
- このサーブレットに対する現在保留中のリクエストresponse
- このサーブレットの現在保留中のレスポンスerrorPageURL
- ページディレクティブの errorpage 属性の値または nullneedsSession
- ページディレクティブからのセッション属性の値bufferSize
- ページディレクティブのバッファ属性の値autoFlush
- ページディレクティブの autoflush 属性の値- 例外:
IOExceptionSE
- JspWriter の作成IllegalStateExceptionSE
- 正しく初期化されていない場合IllegalArgumentExceptionSE
- 指定されたパラメーターのいずれかが無効な場合
release
public abstract void release()このメソッドは、PageContext の内部状態を「リセット」し、すべての内部参照を解放し、initialize() の以降の呼び出しによる潜在的な再利用のために PageContext を準備します。このメソッドは通常、JspFactory.releasePageContext() から呼び出されます。
サブクラスはこのメソッドを包囲します。
このメソッドは、ページまたはタグライブラリの作成者が使用しないでください。
getSession
セッションオブジェクトの現在の値(HttpSession)。- 戻り値:
- この PageContext の HttpSession または null
getPage
ページオブジェクトの現在の値(サーブレット環境では、これは jakarta.servlet.Servlet のインスタンスです)。- 戻り値:
- この PageContext に関連付けられた Page 実装クラスインスタンス
getRequest
リクエストオブジェクトの現在の値(ServletRequest)。- 戻り値:
- この PageContext の ServletRequest
getResponse
レスポンスオブジェクトの現在の値(ServletResponse)。- 戻り値:
- この PageContext の ServletResponse
getException
例外オブジェクトの現在の値(例外)。- 戻り値:
- エラーページとしてこれに渡される例外
getServletConfig
ServletConfig インスタンス。- 戻り値:
- この PageContext の ServletConfig
getServletContext
ServletContext インスタンス。- 戻り値:
- この PageContext の ServletContext
forward
このメソッドは、現在の ServletRequest および ServletResponse をアプリケーション内の別のアクティブなコンポーネントにリダイレクトまたは「転送」するために使用されます。
relativeUrlPath が "/" で始まる場合、指定された URL はこの JSP の
ServletContext
の DOCROOT を基準として計算されます。パスが "/" で始まらない場合、指定された URL は呼び出し元の JSP にマップされたリクエストの URL を基準として計算されます。JSP の
_jspService(...)
メソッド内で実行されるThread
からこのメソッドを呼び出すことのみが有効です。このメソッドが正常に呼び出されると、呼び出し
Thread
がServletResponse
オブジェクトを変更しようとすることは不正です。そのような試みは、未定義の動作を引き起こします。通常、このメソッドを呼び出した後、呼び出し元はすぐに_jspService(...)
から戻ります。- パラメーター:
relativeUrlPath
- 上記のように、ターゲットリソースへの相対 URL パスを指定します- 例外:
IllegalStateExceptionSE
-ServletResponse
が転送を実行できる状態にない場合ServletException
- 転送されたページが ServletException をスローする場合IOExceptionSE
- 転送中に I/O エラーが発生した場合
include
指定されたリソースが、呼び出しスレッドによって処理されている現在の ServletRequest および ServletResponse の一部として処理されるようにします。リクエストのターゲットリソース処理の出力は、ServletResponse 出力ストリームに直接書き込まれます。
この JSP の現在の JspWriter の「アウト」は、インクルードを処理する前に、この呼び出しの副作用としてフラッシュされます。
relativeUrlPath が "/" で始まる場合、指定された URL はこの JSP の
ServletContext
の DOCROOT を基準として計算されます。パスが "/" で始まらない場合、指定された URL は呼び出し元の JSP にマップされたリクエストの URL を基準として計算されます。JSP の
_jspService(...)
メソッド内で実行されるThread
からこのメソッドを呼び出すことのみが有効です。- パラメーター:
relativeUrlPath
- 含めるターゲットリソースへの相対 URL パスを指定します- 例外:
ServletException
- 転送されたページが ServletException をスローする場合IOExceptionSE
- 転送中に I/O エラーが発生した場合
include
public abstract void include(StringSE relativeUrlPath, boolean flush) throws ServletException, IOExceptionSE 指定されたリソースを、呼び出しスレッドによって処理されている現在の ServletRequest および ServletResponse の一部として処理します。リクエストのターゲットリソース処理の出力は、getOut() の呼び出しによって返される現在の JspWriter に直接書き込まれます。
flush が true の場合、インクルードを処理する前に、この呼び出しの副作用として、この JSP の現在の JspWriter "out" がフラッシュされます。そうでない場合、JspWriter の「出力」はフラッシュされません。
relativeUrlPath が "/" で始まる場合、指定された URL はこの JSP の
ServletContext
の DOCROOT を基準として計算されます。パスが "/" で始まらない場合、指定された URL は呼び出し元の JSP にマップされたリクエストの URL を基準として計算されます。JSP の
_jspService(...)
メソッド内で実行されるThread
からこのメソッドを呼び出すことのみが有効です。- パラメーター:
relativeUrlPath
- 含めるターゲットリソースへの相対 URL パスを指定しますflush
- JspWriter がインクルードの前にフラッシュされる場合は true、そうでない場合は false。- 例外:
ServletException
- 転送されたページが ServletException をスローする場合IOExceptionSE
- 転送中に I/O エラーが発生した場合- 導入:
- JSP 2.0
handlePageException
このメソッドは、この JSP の指定されたエラーページに例外を転送することにより、未処理の「ページ」レベルの例外を処理することを目的としています。転送が不可能な場合(たとえば、レスポンスがすでにコミットされているため)、実装に依存するメカニズムを使用してエラーページを呼び出す必要があります(代わりにエラーページを「含める」)。
ページにエラーページが定義されていない場合は、標準のサーブレットエラー処理が引き継ぐように例外を再スローする必要があります。
通常、JSP 実装クラスは、これを呼び出す前にローカル状態をクリーンアップし、その後すぐに戻ります。クライアントへの出力を生成したり、この呼び出しを呼び出した後に ServletResponse の状態を変更したりすることは不正です。
このメソッドは、後方互換性の理由で保持されます。新しく生成されたコードは PageContext.handlePageException(Throwable)を使用する必要があります。
- パラメーター:
e
- 処理される例外- 例外:
ServletException
- エラーページの呼び出し中にエラーが発生した場合IOExceptionSE
- エラーページの呼び出し中に I/O エラーが発生した場合NullPointerExceptionSE
- 例外が null の場合- 関連事項:
handlePageException
このメソッドは、この JSP の指定されたエラーページに例外を転送することにより、未処理の「ページ」レベルの例外を処理することを目的としています。転送が不可能な場合(たとえば、レスポンスがすでにコミットされているため)、実装に依存するメカニズムを使用してエラーページを呼び出す必要があります(代わりにエラーページを「含める」)。
ページにエラーページが定義されていない場合は、標準のサーブレットエラー処理が引き継ぐように例外を再スローする必要があります。
このメソッドは、この JSP の指定されたエラーページに例外をリダイレクトするか、指定されていない場合は実装に依存するアクションを実行することにより、未処理の「ページ」レベルの例外を処理します。
通常、JSP 実装クラスは、これを呼び出す前にローカル状態をクリーンアップし、その後すぐに戻ります。クライアントへの出力を生成したり、この呼び出しを呼び出した後に ServletResponse の状態を変更したりすることは不正です。
- パラメーター:
t
- 処理されるスロー可能オブジェクト- 例外:
ServletException
- エラーページの呼び出し中にエラーが発生した場合IOExceptionSE
- エラーページの呼び出し中に I/O エラーが発生した場合NullPointerExceptionSE
- 例外が null の場合- 関連事項:
pushBody
新しい BodyContent オブジェクトを返し、現在の「出力」JspWriter を保存し、PageContext のページスコープ属性ネームスペースの "out" 属性の値を更新します。- 戻り値:
- 新しい BodyContent
getErrorData
エラー情報への便利なアクセスを提供します。- 戻り値:
- サーブレット仕様に従って、リクエスト属性から取得されたエラーに関する情報を含む ErrorData インスタンス。これがエラーページでない場合 (つまり、ページディレクティブの isErrorPage 属性が "true" に設定されていない場合)、情報は無意味です。
- 導入:
- JSP 2.0