Struts2 Sessionを使う

2016年02月28日(編集2016年03月17日)
このエントリーをはてなブックマークに追加

Struts2でsessionを扱う方法を記載します。
環境はStruts2, javaはoracle jdkを利用します。

環境

  • CentOS6.5
  • oracle jdk version 1.8.0_71
  • Struts2 version 2.3.16.2

内容

初心者向け

Sessionとは

ページ間で変数の内容を維持するための仕組みのことです。
例えば、Aというページの変数の値を、Bというページでも使えるようにするときに使用します。
クッキーとの違いは、クッキーがクライアント側(パソコン側)に様々な情報を保存させるのに対し、セッションは、サーバー側に様々な情報を保存させておきます。

sessionをStruts2で利用する場合は、SessionAwareインターフェースを利用します。

SessionAwareインターフェース

SessionAwareインターフェースはStruts2で提供されているインターフェースです。
セッションを利用したいアクションで、SessionAwareインターフェースを実装して使用します。
実装すると、Mapでセッションオブジェクトにアクセスできます。

{project_folder}/action/SampleSessionAction.java
@Namespace("/api/sample")
@Action("/session")
public class SampleSessionAction extends ActionSupport implements SessionAware {

    private Map<String, Object> session;

    @Override
    public void setSession(Map<String, Object> session) {
        this.session = session;
    }
}
        

上記の実装で、SampleSessionActionクラスのsessionフィールドへStruts2が自動的にHttpSessionの内容をMapの型で格納します。

session格納

Map型なのでpushメソッドでkeyとvalueを設定します。

{project_folder}/action/SampleSessionAction.java
session.put("key", value);
        

session削除

Map型なのでremoveメソッドでkeyを指定して削除します。

{project_folder}/action/SampleSessionAction.java
session.remove("key");
        

session破棄

SessionMapクラスにキャストして、invalidateメソッドを呼び出します。

{project_folder}/action/SampleSessionAction.java
((SessionMap)session).invalidate();
        

session取得

アクションクラスでsession取得メソッドを実装し、Mapのgetメソッドでkeyから値を取り出します。

{project_folder}/action/SampleSessionAction.java
public class SampleSessionAction extends ActionSupport implements SessionAware {

    private Map<String, Object> session;

    @Override
    public void setSession(Map<String, Object> session) {
        this.session = session;
    }

    public Map<String, Object> getSession() {
        return session;
    }
    
    @Override
    public String execute() throws Exception {
        Map<String, Object> session = getSession();
        if (session != null) {
            value = (String)session.get("key");
        }
        return "success";
    }
        

以上です。

タグ検索で調べてみよう

Struts2