0

このタスクを解決する必要がある jsp と spring mvc に基づく Web アプリケーションがあります。

ユーザーは、ウィザード ダイアログを使用してメイン エンティティの新しいインスタンスを追加できる必要があります。ウィザードは 3 つのステップで構成されています。

  1. 最初のステップでは、メイン エンティティのフィールドに入力できるフォームが必要です。これには、多対 1 で関連付けられたエンティティとの関連付けが含まれます (ドロップダウン フィールドを使用することをお勧めします)。フォームには、テキスト、数値、日付、ラジオ ボタンなど、さまざまなタイプのフィールドが含まれている必要があります。必要なフィールドとそうでないフィールドがあります。例: 名前、姓、生年月日、電話番号、子供の数、性別の選択 (ラジオボタン)、部門 (ドロップダウン) などを入力します。

  2. 2 番目のステップで、ユーザーは追加の属性を入力します。これには、現在のエンティティと多対多で関連付けられたエンティティとの関連付けが含まれます。例: 従業員をスキルに関連付け (チェックボックス)、メモを追加します (テキストエリア)。

  3. 3 番目のステップでは、前の 2 つのステップのすべてのフィールドが読み取り専用フィールドとして表示されます。ユーザーは、このデータをデータベースに保存することを確認する必要があります。ユーザーが保存を確認した後、データはデータベースに保存され、ユーザーはオブジェクトのリストを含むページにリダイレクトされます。

セッション(Httpセッション、セッションスコープ)を使わずに情報を転送・保持するにはどうすればよいですか?

4

1 に答える 1

1

複数のサーバーとのやり取りで状態を維持する必要があります。いくつかの可能性があります。一般に、保持する状態データのサイズなどの要因が決定に影響します。

ここには数百バイトの少数の数があるように聞こえるので、サイズによって特に制約されることはありません.数メガバイトはもっと難しいでしょう.

最初の可能性として、ブラウザの JavaScript 変数にすべてを保持します。実際にサーバーに何かを送信する必要はありません。これは、サーバーがページではなくデータを提供する最新の動的 Web UI の典型です。あなたは複数ページの世界にいるように聞こえるので、このオプションを割り引いてください.

次に、いくつかのデータ (暗号化されている可能性があり、Cookie に) を入れるだけで、ブラウザがデータを効果的に保持しますが、データはページ間で共有されます。

3番目の使用Httpセッション状態-あなたのケースは、セッションの典型的な候補と非常によく似ています。なぜそれを避けたいのですか?サーバーの機能によっては、このアプローチでは優れた回復力が得られない場合があります (状態が 1 つのサーバー インスタンス上にある場合、セッションのすべての要求は同じサーバーによって処理される必要があります)。HTTP セッション Bean と EJB セッション Bean は同じものではないことに注意してください。HttpSession の方が軽量です。

カスタム セッション「データベース」を使用します。文字どおり SQL データベースかもしれませんが、もっと軽いものかもしれません。ユーザーが多くのページを完了するのに数十分かかる可能性がある大規模なデータ入力の場合、これが最適なオプションです。中断して後で再開する必要がある場合、ユーザーの作業は保存されます。これはより多くの開発作業であり、ハウスキーピングも検討する必要がありますが、場合によってはこれが最適なオプションです。

要約すると、「明白な」HTTP セッション手法を拒否する理由を明確にしてください。単純さの観点から、それが私が始めるところです。

于 2013-01-21T15:41:47.603 に答える