ユーザー作成オブジェクト (JavaBean オブジェクトなど) や JSP 暗黙的オブジェクトなど、JSP ページ内のオブジェクトにはスコープ属性があります。スコープは、これらのオブジェクトにアクセスできる時間と JSP ページを定義します。たとえば、セッション中に複数のページでセッション オブジェクトにアクセスできます。アプリケーション オブジェクトは、Web アプリケーションのライフサイクル全体を通じてアクセスできます。 JSPには以下の4種類のスコープがあります。
・ページ範囲
ページ スコープを持つオブジェクトは、javax.servlet.jsp.PageContext オブジェクトにバインドされます。このスコープ内のオブジェクトには、オブジェクトが作成されたページでのみアクセスできます。暗黙的オブジェクト pageContext の getAttribute() メソッドを呼び出して、このスコープ タイプのオブジェクトにアクセスできます (pageContext オブジェクトには、他のスコープ オブジェクトにアクセスするための getAttribute メソッドも用意されています)。pageContext オブジェクト自体もページ スコープに属します。 Servletクラスの_jspService()メソッドを実行すると、ページスコープに属するオブジェクトへの参照が破棄されます。ページ スコープ内のオブジェクトは、クライアントが JSP ページを要求するたびに作成され、ページがクライアントに応答を返すか、要求が他のリソースに転送された後に削除されます。
・リクエスト範囲
リクエスト スコープを持つオブジェクトは javax.servlet.ServletRequest オブジェクトにバインドされます。リクエスト暗黙オブジェクトの getAttribute() メソッドを呼び出して、このスコープ タイプを持つオブジェクトにアクセスできます。この範囲のオブジェクトには、forward() メソッドを呼び出してリダイレクトされたページ、または include() メソッドを呼び出してインクルードされたページでアクセスできます。リクエスト オブジェクトはクライアント リクエストごとに異なるため、このスコープ内のオブジェクトは新しいリクエストごとに再作成および削除する必要があることに注意してください。
·セッションスコープ
セッション スコープを持つオブジェクトは javax.servlet.http.HttpSession オブジェクトにバインドされ、セッション暗黙オブジェクトの getAttribute() メソッドを呼び出して、このスコープ タイプを持つオブジェクトにアクセスできます。 JSP コンテナは、セッションごとに HttpSession オブジェクトを作成します。セッション中に、セッション スコープ内のオブジェクトにアクセスできます。
・適用範囲
アプリケーション スコープを持つオブジェクトは javax.servlet.ServletContext にバインドされます。アプリケーションの暗黙的オブジェクトの getAttribute() メソッドを呼び出して、このスコープ タイプを持つオブジェクトにアクセスできます。 Web アプリケーションの実行中は、すべてのページがこのスコープ内のオブジェクトにアクセスできます。