セッションとは
クライアントから何か処理を開始するときに、サーバー側でセッションIDを割り振り、クライアントに渡す。
この際に、セッションIDに付随する情報はサーバ側で保持する。
では、このセッションIDっぽいのをPlay Frameworkで使ってみようと、以下のStackoverflowをおおいに参考にした。
http://stackoverflow.com/questions/9416964/where-is-session-id-in-play-2-0
回答の、
Session id? it sounds so Java EE anyways...
がカッコ良かったw
Play FrameworkでSession ID
とりあえずviewの方。
index.scala.html
@(msg: String) @import helper._ @import helper.twitterBootstrap._ @main("Sample Page") { <h1>Hello!</h1> <p>@msg</p> <form method="get" action="/submit"> 名前:<input type="text" name="name" id="name" value="hoge"> <input type="submit" value="リクエスト"> </form> }
で、routesファイルはこんな感じ。
# Home page GET / controllers.Application.index() # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file) GET /submit controllers.Application.submit()
で、Controller。
Application.java
package controllers; import play.data.Form; import play.mvc.Controller; import play.mvc.Result; import views.html.index; public class Application extends Controller { public static Result index() { String uuid=session("uuid"); if(uuid==null) { uuid=java.util.UUID.randomUUID().toString(); session("uuid", uuid); } return ok(index.render("UserID:" + uuid)); } public static Result submit() { String name = Form.form().bindFromRequest().get("name"); String myId = session("uuid"); return ok(index.render("リクエスト受け取った!貴様の名前は→" + name +"だな!?" + "セッションIDは:" + myId + "だッッ!")); } }
ここの、
String uuid=session("uuid"); if(uuid==null) { uuid=java.util.UUID.randomUUID().toString(); session("uuid", uuid); }
という部分で、ユーザーごとというか、ブラウザごと?のユーザーIDをuuidという名前で設定している。
さて、実際に見てみよう。
セッションIDは、
8f131ba4-9cfb-4f15-b653-a1cabe175a47
次に、画面の「リクエスト」を押すと・・・
こんな感じで、セッションIDが保持されていることがわかる。
リクエスト受け取った!貴様の名前は→SESSION TESTだな!?セッションIDは:8f131ba4-9cfb-4f15-b653-a1cabe175a47だッッ!
今後は普段使ってないIEで同じようなリクエストを投げてみると・・・
最初のChromeでのセッションIDとは違うIDが割り振られている。
UserID:308170cb-6f60-4de7-ad29-31fd487278d5
これを活用すると、ログインしたユーザーだけ処理を進める・・・みたいなことが実現できそうだ。

Play Framework 2徹底入門 JavaではじめるアジャイルWeb開発
- 作者: 掌田津耶乃,原一浩
- 出版社/メーカー: 翔泳社
- 発売日: 2013/12/17
- メディア: 大型本
- この商品を含むブログ (3件) を見る