サーブレットクラスで作成したインスタンスを他のクラスやJSPで使用するためには、スコープという共有領域を作成します。
種類
スコープには4つの種類と管理の期間がそれぞれがあります。
・アプリケーションスコープ(application)
すべてのユーザー
アプリケーション全体で使用可能で管理者によってWebアプリケーションが停止されるかプログラムのコード内容の更新がされるまで有効。
・セッションスコープ(session)
ユーザーごと
接続されている間(ブラウザを開いている間)有効
開発者が意図的にプログラム内で削除することが可能。
・リクエストスコープ(request)
ユーザーごと
一つのリクエストに対してのレスポンスの間
・ページ(pageContext)
ユーザーごと
JSPファイルのみで取得するインスタンス
スコープの元となるクラス
スコープに保存されるインスタンスはJavaBeansというクラスを元に作成されます。
JavaBeansにはルールがいくつかあります。
・パッケージに所属しクラスはpublicで記述
・クラスの直列化が可能(java.io.Serializableインターフェイスを実装している)
・引数なしのコンストラクタをもつ(記述はしなくてもよい?)
・フィールドはprivateでカプセル化
・getterとsetterのプロパティを持つ
スコープ使用時のながれ
サーブレットクラスにてインスタンスの作成
↓
サーブレットスコープへインスタンスの保存
↓
インスタンスの取得
構文
変数の設定取得メソッドはサーブレットに記述しスコープ設定を行います。
使用したいファイルにてgetAttributeでスコープを取得します。
以下のような構文になります。
・オブジェクトをサーブレットクラスでのスコープへと保存する場合
使用セッション名.setAttribute(“スコープで管理するインスタンス名”,作成したインスタンス名)
例 リクエストスコープへ保存する場合
request.setAttribute(“test”,test)
・JSPでスコープからオブジェクトを取得する場合
使用セッション名.getAttribute(“スコープで管理するインスタンス名”)
例 リクエストスコープから取得する場合
request.getAttribute(“test”)
その他メモ
スコープインスタンスの元となるJavaBeansの作成はjavaファイルとして作成。
フィールドの記述からEclipseの機能でgetter/setterは自動生成する事が出来る。
まとめ
サーブレットでのスコープでは、
リクエストを受け取りフォワードしてフォワード先からパラメータを受け取り、
インスタンスを生成しスコープへ保存し最終的にスコープへのリクエストを返す。
うまく使いこなすためにはひたすら書いて覚えていくしかなさそうです。
だんだん話がそれましたが今回はMVCパターンにおける「スコープ」というインスタンスを共有できる領域について書かせて頂きました。
駆け出しエンジニア けいこ♂
コメント