• ベストアンサー

Javaサーブレットのスコープ

データの有効範囲のことです。Servletでは、requestスコープ、sessionスコープ、applicationスコープの3つのスコープがあります。HTTPセッション間でデータを共有したい場合はsessionスコープ、webアプリケーション間でデータを共有したい場合はapplicationスコープというようにデータの有効範囲によりスコープを使い分けます。 という説明がありますが 「sessionスコープ」と「applicationスコープ」 はどちらが広いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Paul_xxx
  • ベストアンサー率56% (27/48)
回答No.2

んーと、まず3つではなく、4つです。 もう1つpageスコープというのがあります。 検索すると3つしか紹介してないページが結構ありますね。 広い順に説明すると application Webアプリケーションが起動している間有効 すべての処理で共有するデータを入れます。 カウンタの数値等 session クライアントが接続状態である間有効 ユーザごとの共有データなど 一般的にログイン状態を作った場合に使います。 request ページ遷移の間のみ有効、通常の処理で一番 使うかと思います。 page ページの表示開始から終了までの間有効 ちょっとおおざっぱな説明ですが詳細は APIドキュメントや参考URLで勉強してください

参考URL:
http://mayaa.seasar.org/documentation/implicit_object.html
guuman
質問者

お礼

ありがとうございました。 参考になりました。

その他の回答 (2)

noname#18558
noname#18558
回答No.3

applicationスコープは、アプリケーション内で共有されます。 なので、複数ユーザーから共有されます。 一般的に、アプリケーションの状態や設定ファイルの内容など、アプリケーション起動時に設定され、以後は変更されないような値を保持します。 sessionスコープは、ブラウザごとに一つです。 ウィンドウの新規作成から開いた場合は、JavaScriptでopenした場合は、sessionが共有されます。 プログラムファイルなどから、新しくブラウザを開いた場合は、同一PCからでも別セッションとなります。 どちらが広いか、という問題より 使い方に違いがあるので気をつけて下さい。

guuman
質問者

お礼

ありがとうございました。 気をつけます。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

Applicationスコープの方が広いです。 簡単に言えば、sessionスコープにあるものはセション(HttpSession)で保持すれているということです。

guuman
質問者

補足

ありがとうございます セッションではデータが消え アプリではまだデータが保持されているとはどういう状況でしょうか?

関連するQ&A