Sharable

システム&ウェブのシェアラブル

Lv.5 セッションとフラッシュでスコープ管理 [play framework2.0] [java]

2012年3月27日

スコープ管理をするときに、PlayではSessionとFlashというクラスを用意してくれています。

※1:タイムアウト処理をしたいときは、timestampをsessionに保持して都度判定してね、とのこと。

Sessionは、まぁセッションです。
ただしタイムアウトの設定は出来ません。※1
セッションは、ユーザーがブラウザを閉じるまで使えるようです。


Flashは1リクエストのみ、またげます。

※2:競合状態(race condition)
予期せぬ順序でイベントが発生するような状態。つまり、会計処理なんかでページ遷移の順序をサーバーで知りたいときなんかにflashを使うと予期せぬ順序で処理が進んで、予期せぬ例外のもとになるんだと思います。

Flashは競合状態※2にあるので、単純な成功/失敗の判定にのみ使うべきだそうです。

いづれも以下の前提条件があります。

  • Cookiesを利用してる
  • サーバーにはデータは残らない
  • 4KBが上限
  • Stringのみ格納できる
※3:キャッシュしたいなら、別途キャッシュAPIを使うらしいです。The Play cache API

ただし、Playではsessionをキャッシュとして利用することは考慮されていない。※3

使い方は以下です。
sessionもflashもMapを継承しているので、基本的に
Mapのそれです。

// セッション保持
session("connected", "user@gmail.com");

// セッション取得
String user = session("connected");

// セッション削除
session().remove("connected");

// セッション初期化
session().clear();

flashも使い方は同じ。

このエントリーをはてなブックマークに追加