プロが教える店舗&オフィスのセキュリティ対策術

の違いを教えてください。

sessionスコープ:
HTTPセッション間でデータを共有したい場合に使用します。これにより、異なるページ間でブラウザを閉じるまで、もしくは一定時間経過するまでデータを共有することができます。

applicationスコープ:
webアプリケーション間でデータを共有したい場合に使用します。webアプリケーション間とは、サーブレットコンテナに設定されるwebアプリケーション内のことを言います。

ではよく分からないのでどちらがより広いのかどういう場合にどっちなのかを具体的に教えてください。

A 回答 (3件)

まず決定的に違うのがライフサイクルです。



'applicationスコープ'と呼ばれる領域はそのコンテキストが所属するコンテナが尊属する限り永続的に存在します。
つまりアプリケーション開始から終了まで有効、ということです。
そしてそれはアプリケーション(あなたの言うコンテキスト)で唯一です。

'sessionスコープ'と呼ばれる領域はJ2EE-APIがあるトリガをもとに生成する時限付メモリ空間です。
これは1つの領域に対してセッションIDと呼ばれるキーで複数存在します。
セッションタイムアウトによって設定された時間を過ぎるとセッションマネージャによりパージ(消去)されます。


例えばアプリケーションにひとつしか必要ないものがあった場合はapplicationスコープに保管しておくとよいでしょう。
変更することがないマスタやシステム固有のシグネチャなどがこれにあたります。
sessionスコープには通常ユーザに紐付いた情報を保管します。
ユーザのログイン時間やユーザIDから取得したプロファイルなど。
ショッピングサイトによくあるカート情報などもこれにあたるでしょう。
もっともそれらのすべてはアプリケーションの設計段階で綿密に考慮される内容です。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます。

お礼日時:2007/06/27 18:54

applicationとsessionは包含関係にありません。


applicationスコープは、アプリケーションで一つなので別ブラウザから呼ばれてもアクセスできます。

この回答への補足

ありがとぅございます。
アプリケーションスコープの変数はコンテキスト間では共有しないのでしょうか?

補足日時:2007/06/26 20:57
    • good
    • 0

まずは、HTTPセッションとは何かを理解してますか?


それが分かれば、必然と答えはでます。
質問の文章を読めば答えはでてると思うのですが、具体的に何が分からないんでしょうか?

参考URL:http://www.atmarkit.co.jp/fjava/rensai3/tomcat09 …

この回答への補足

ありがとうございます。
ブラウザによって呼ばれたサーバが保存したセッション変数は他のブラウザから呼ばれたサーバがアクセスできないものと思っています。
application変数は他のブラウザによって呼ばれたサーバからアクセスできるのでしょうか?
sessionのスコープよりもapplicationのスコープのほうが広いのかどうかが分かりません。
これらのスコープは包含関係にないのでしょうか?

補足日時:2007/06/26 13:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!