Servletにおけるスコープ
常駐先でJavaで作られているWEB改修タスクのコードレビューをしてもらったときに、
「ログインしているユーザーの情報はどこにもっているか知ってるか」と聞かれてうまく答えられなかった。
答えはSessionスコープらしいのだが、
コンソール開発ばかりやっている自分には全く馴染みのない言葉でいまいち分からなかったので
スコープについて少し調べてみた
スコープの種類
Servletにはスコープが3種類存在する
・requestスコープ
・sessionスコープ
・applecationスコープ
スコープの生存期間は
requestスコープ < sessionスコープ < Applecationスコープ
になっている
requestスコープ
・リクエスト間でデータを共有するためのスコープ
・入力画面、入力確認画面など隣り合ったページ間で使われる
コンソール開発やってきた自分の感覚で言うと、おそらく1クラス内のローカル変数
sessionスコープ
・Httpセッション間でデータを共有するためのスコープ
・ブラウザが閉じられたり、一定期間がすぎると消滅する
・ログインユーザー情報や買い物かごなどに使われる
コンソール開発やってきた自分の感覚で言うと、サブスレッドのスレッドローカルな変数
applicationスコープ
・webアプリ全体でデータを共有するためのスコープ
・生存期間中はデータは保持される
コンソール開発やってきた自分の感覚で言うと、メインスレッドのグローバルな変数
applicationスコープはわかりやすいが、requestスコープとSessionスコープについてはまだまだ分からないことが多い