エンジニアの雲日記

Javaの勉強中やで〜

c:set で変数の「寿命」を決める!scope 属性とは?

JSTLの<c:set>タグは、Javaでいうところの「変数を宣言して値を設定する」処理をJSP上で行うためのタグやな。


このタグで設定した変数が

「いつまで、どこまで使えるか」

という有効範囲(スコープ)を決めるのが、scope 属性の役割なんや。


この scope 属性に指定できる値は、全部で4種類あるで!

 


📝 4つのスコープとその有効範囲


| scope 属性の値 | 意味 | 有効範囲(寿命) |
|---|---|---|


| page | ページスコープ (デフォルト) | そのJSPファイル内だけで有効。処理が終わったら即座に消える。 |


| request | リクエストスコープ | 一つのHTTPリクエストの処理が終わるまで有効。サーブレットからJSPへの連携とかに使う。 |


| session | セッションスコープ | クライアント(ブラウザ)がサイトにアクセスしてから離脱するまで有効。ログイン状態の保持とかに使う。 |


| application | アプリケーションスコープ | サーバー(ウェブアプリ)が動いている間中ずっと有効。全てのユーザーで共有される。 |

 


💡 なんでスコープを指定する必要があるん?


もし scope 属性を指定せえへんかったら、デフォルトで**page スコープ**になるんや。


でも、サーブレットからJSPにデータ(例えば、データベースから取ってきた商品リストとか)を渡したい時ってあるやろ?

 

そういう時は、


* サーブレットでデータを**request スコープ**に入れる。


* JSPでそのデータを request スコープから取り出す。


っていう流れになるから、request スコープを使わなあかんわけや。

 

特定の用途に応じて、変数の「寿命」と「共有範囲」を適切に設定するために、この scope 属性はめっちゃ重要なんやで!


これで、<c:set> の使い方がバッチリわかったな!

変数の寿命をコントロールできるようになったで!