JavaEEではスコープアノテーションによって変数のスコープを使い分けられたのですが、サーブレットの場合はプログラムの中で使い分けます。
通常はページ、リクエストとセッション、アプリケーションぐらいでしょうか。ちょっとスコープについて整理しておきましょう。
スコープの範囲
ページ
そのページ単体だけで使われるスコープ。ほかのページとの共有の必要がない場合のみ使われる。最もスコープが狭い。
<c:set>タグなどで設定できる
リクエスト
現在のページと現在のページからフォワード、インクルードされる中で有効。
リダイレクトされると消える。
セッション
セッションの範囲内でBeansを保持する。ユーザーが現在のアプリケーションを保持する間中有効。
わかりやすい例としては買い物かごなど。
アプリケーション
現在のアプリケーションでアクセスしている全ユーザーが共有できる最も広範囲のスコープ
スコープへの変数の格納方法
ページはjsp内のみで有効です。まだ使ったことないんですが(汗)
リクエスト、セッション、アプリケーションについては下記のようにセットしたり、取り出したりします。
1 2 3 4 5 6 7 |
//プログラム内での値のセット request.setAttribute(キー, 値); //取り出し方 request.getAttribue(キー) //jsp内での値の参照 ${requestScope.属性名} |
残念ながらJSFでよく使うFlashはないようです。便利だったのになぁ・・・
参考リンク
http://www.javaroad.jp/servletjsp/sj_jsp8.htm
http://www.javaroad.jp/servletjsp/sj_servlet4.htm
また上記のスコープの記述に関しては
独習Javaサーバサイド第2版を参考にしました。