Servletにおけるスコープ

常駐先でJavaで作られているWEB改修タスクのコードレビューをしてもらったときに、
「ログインしているユーザーの情報はどこにもっているか知ってるか」と聞かれてうまく答えられなかった。
答えはSessionスコープらしいのだが、
コンソール開発ばかりやっている自分には全く馴染みのない言葉でいまいち分からなかったので
スコープについて少し調べてみた

スコープの種類

Servletにはスコープが3種類存在する

・requestスコープ

・sessionスコープ

・applecationスコープ

スコープの生存期間は

requestスコープ < sessionスコープ < Applecationスコープ

になっている

requestスコープ

・リクエスト間でデータを共有するためのスコープ
・入力画面、入力確認画面など隣り合ったページ間で使われる

コンソール開発やってきた自分の感覚で言うと、おそらく1クラス内のローカル変数

sessionスコープ

・Httpセッション間でデータを共有するためのスコープ
・ブラウザが閉じられたり、一定期間がすぎると消滅する
・ログインユーザー情報や買い物かごなどに使われる

コンソール開発やってきた自分の感覚で言うと、サブスレッドのスレッドローカルな変数

applicationスコープ

・webアプリ全体でデータを共有するためのスコープ
・生存期間中はデータは保持される

コンソール開発やってきた自分の感覚で言うと、メインスレッドのグローバルな変数

applicationスコープはわかりやすいが、requestスコープとSessionスコープについてはまだまだ分からないことが多い

 

あわせて読みたい