【サーブレット&JSP】セッションスコープ

f:id:nowa0402:20210622123431p:plain
こんにちは。のわです。
今回は、セッションスコープの使い方を整理したいと思います。

スコープとは

 スコープはインスタンスを保存できる領域】のことです。
 スコープを利用することで
 サーブレットクラスで生成したインスタンスJSPファイルで利用する】
 ことが可能になります。

 インスタンス使用時はスコープを経由することになるということです。

 スコープに保存できるものはインスタンスのみです。
 intやdouble型などの基本データ型は保存できません。



セッションスコープとは

 セッションスコープはスコープの一種です。
 以下のような特徴があります。

  ・リクエストをまたいでインスタンスを利用できる
  ・有効期限は開発者で決めることができる

 なお、リクエストをまたげない、レスポンスが返されるまで利用出来るスコープもあります。
 (リクエストスコープ)



利用方法(サーブレットクラス)

 
 サーブレットクラスでの利用方法です。
 まずは、セッションスコープを利用するための準備です。
 利用には【javax.servlet.http.HttpSession】インスタンスのメソッドを使います。


HttpSession取得

 まずは、HttpSessionインスタンスを取得します。
 構文は以下のとおりです。

 HttpSession s = request.getSession();
 //javax.servlet.http.HttpSessionをimportしておく

 インスタンス取得時は【getSession()メソッド】を使用します。


保存

 次に、保存したいインスタンスを指定します。

 s.setAttribute("属性名", インスタンス名)
 //引数は、第1引数にString型, 第2引数にObject型を指定

 保存するときは【setAttribute()メソッド】を使用します。
 第1引数はString型、第2引数はObject型となっています。
 
 属性値はインスタンス管理用の名前です。
 JSPで利用する際に使用します。

 ここで注意したいのが第2引数です。
 第2引数に自分が保存したいインスタンスを格納します。
 引数の型はObjectのため、どんな型でも入れることができます。

 ただし、利用するときは型の変換(キャスト)が必要になります。
 注意しましょう。


取得

 
 次に保存したインスタンスを取り出す構文です。

 取得するインスタンス型 変数名 = (取得するインスタンス型) s.getAttribute("属性名");

 保存したものを取得するときは【getAttribute()メソッド】を使用します。
 引数には保存時に指定した属性名を入れます。

 また、取得するときは型変換(キャスト)することを忘れないようにしましょう。


削除

 最後に削除するときです。

 s.removeAttribute("属性名");

 
 削除するときは【removeAttribute()メソッド】を使用します。



利用方法(JSPファイル)

 次にJSPファイルでの利用方法です。
 JSPファイルではHttpSessionインスタンスを生成する必要はありません。
 暗黙オブジェクトである【session】を使用します。

 取得するインスタンス型 変数名 = (取得するインスタンス型) session.getAttribute("属性名");

 使用方法はサーブレットクラスのときと大差ありません。
 





今回は、セッションスコープについてまとめてみました。
Web上でJavaプログラムを動かせるようになりました。

今度は簡単なWebアプリケーションを作成し、ブログにアップしたいと思います!
最後まで読んでいただき、ありがとうございました。