0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セッションスコープについての備忘録

(個人的な気付きをまとめたものです。読みにくかったりするかもしれませんが、ご了承ください。)

基本的な使用方法

セッションスコープはユーザーごとに割り当てられたHttpSessionクラスのインスタンスです。
request.getSession()を使用したタイミングでインスタンスが作られると同時に、各ユーザーにIDが自動的に割り振られる。
以後アプリケーションサーバーはそのIDに対応するインスタンスに対し、setAttribute("a",a)で保管した情報をgetAttribute("a")で返すことができる。

なお、サーバー側からはユーザーがブラウザを使用しているか確認できないため、
HttpSessionインスタンスが使用されないままある一定の時間が経過すると、
セッションタイムアウトという機能が実行され、消去されます。
ですがそれでも長時間保持することとなるので、removeAttribute("a")を使用して
積極的に消去した方が良いらしい。
またinvalidate()を使用してセッションスコープごと消す方法もあるらしいが、
これはユーザーがログアウトした際などに使用されるようです。

また、HttpSessionインスタンスはサーバー停止中も直列化(バイト列に変換すること。バイト列とは人間の読めない、0と1が並んだものである)されファイルに保管される。
この時直列化されても大丈夫なように、HttpSessionインスタンスに保管するインスタンスは直列化可能、つまりjava.io.Serializableインターフェースを実装している必要がある。

気を付けるべきこと

今回僕がこれを書こうと思ったきっかけでもある、setAttribute()とgetAttribute()の属性名について書いておく。
この属性名とは、自分で決めることができる。ぼくはてっきりクラス名だと考えていたので、青天の霹靂のように感じた。属性名って書いてるんやから、早い段階で疑いを持てればよかった、、、

属性名とはクラス名のことだと考えていたので、スネークケースで名前を書いていましたが、可読性も悪く、保守の面でよくないと考え、今後は気を付けようと思います。

振り返り

今回初めて記事にして反省したが、頭の中が整理されて知識の定着にも良い気がする。
現在は大学を中退してプログラミングを学んでいるわけだが、これが就職に結びつくように努力したいと思う。
結論!セッションスコープは難しいけどサーバーのためにも積極的に管理するべし!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?