私はトランザクション管理アプリケーションに取り組んでおり、Struts2 を使用しています。次のような値を設定および取得するためのセッションを内部的に使用しました
ActionContext.getContext().getSession().put("string", string);
アプリケーションでこのようなセッションを使用することの制限または欠点はありますか?
私はトランザクション管理アプリケーションに取り組んでおり、Struts2 を使用しています。次のような値を設定および取得するためのセッションを内部的に使用しました
ActionContext.getContext().getSession().put("string", string);
アプリケーションでこのようなセッションを使用することの制限または欠点はありますか?
制限はありません。Struts 2 のセッションは、Map
サーブレット セッションの属性へのアクセスを簡素化するために として実装されています。
私はこの答えに書いています:
は
SessionMap
、サーブレットのセッション属性にアクセスしたい場合のために特別に設計されています。そのため、ユーザーは同期されたオブジェクトのコレクションをセッションで保持し、HttpSession
直接ではなく使用できます。
アクション コンテキストからセッションを取得する場合の欠点は 1 つだけですnull
。解決策はこの回答にあります。
アクションへのセッション マップを取得するには、次の 2 つの方法があります。
- 実装し
SessionAware
ます。デフォルトでは、セッション マップはアクション コールで読み込まれます。これは望ましい方法です。- アクション コンテキストからセッション マップを取得します。このようにして、リクエストが Struts2 フィルターによって処理されるようにする必要があります。
ドキュメントページで説明されているように、最初の方法が推奨され、テストでセッションを使用できます。
制限は、コンピューターの物理メモリのサイズです。その間に誰かが変更できるため、動的な値をセッションに保存しないでください。ユーザー固有のデータまたは静的な値を表す値のみをセッションに保存します (つまり、セッションが存在する間に変更されます)。
注:ここでstatic はstaticキーワードではありません。
システムの内部/物理メモリのサイズです。セッションは、war ファイルにシングルトン クラスを作成します。war ファイルはサーバーに保存されます。サーバーは、Windows の C: フォルダーにあります。したがって、セッションは物理メモリに依存します。