
スコープとは?
Javaのインスタンスを、Webアプリ内で保存できる領域のことです。
スコープに保存できるもの
あくまで、インスタンスのみが保存できるので、int型や、double型等の基本データ型は保存できません。(保存したい場合は、ラッパークラスのInteger型や、Double型当のクラスを使います。)
スコープの種類
スコープ名 | 有効範囲 | 用途 |
---|---|---|
ページ | JSPページ内 | JSP特有のスコープで、JSPページのみで使われます。 |
リクエスト | リクエスト | 一時的な処理結果の保持に使う。次のリクエストが来た場合はデータが消えます。 |
セッション | 同ユーザー | ショッピングカートに使う。タイムアウトしない限りは保持されます。 |
アプリケーション | 同アプリケーション | データソース、メッセージリソースの保持に使う。アプリケーションやサーバーがシャットダウンしない限りは保持されます。 |
スコープの広さ
下記のようになります。
リクエストスコープ
ユーザーが同じ場合に、一つのリクエストに対して、値が保持される。
サーブレットAPIの該当クラス
javax.servlet.http.HttpServletRequestインターフェイス
セッションスコープ
ユーザーが同じ場合に、何度リクエストしたとしてもセッションが続いている限りは、データが保持される。
サーブレットAPIの該当クラス
javax.servlet.http.HttpSessionインターフェイス
なお、セッションについての詳細は、下記の記事で解説しています。
アプリケーションスコープ
ユーザーが異なっていても、同じデータを使える。
サーブレットAPIの該当クラス
javax.servlet.http.HttpContextインターフェイス
用途
全ユーザーで共通のスコープになるので、頻繁に更新されるデータはあまり使いません。
基本的には、読み取り専用のデータを格納する場合に使います。
3つのスコープ(リクエスト、セッション、アプリケーション)に共通するメソッド
下記のメソッドは、リクエスト、セッション、アプリケーションどのスコープであっても、共通しています。
メソッド | 説明 |
---|---|
getAttribute | スコープから値を取得する。 |
setAttribute | スコープに値を入れる。 |
removeAttribute | 登録されているスコープの値を削除する。 |
ぜひ活用しましょう。
この記事へのコメントはありません。