1

これは、 Spring MVC 2.5、jsp、Java7、Ajax、および HTML5を使用して行っている新しいプロジェクトです。私の側では、それぞれ 1 つのフォームを含む 7 ~ 10 個の jsp ページを用意する予定です。これらのページは連続しています。つまり、最初のページを通過して 2 番目のページに移動し、2 番目のページを通過して 3 番目のページに移動する必要があります。

データを永続化するには、(残りを正常に渡した後) 最後のページに到達し、情報が正しいことを確認する必要があります。ユーザーが確認したら、Bean またはセッションに保存されているすべてのデータを永続化する必要があります (すべてまたはなし)。不完全なデータは保持されません。データベーステーブルを「employee」としましょう

私はSpring MVCを初めて使用しますが、アイデアを得て、コントローラーを使用してページフローを実装しました。

私の質問は、すべてのデータを保存するために 1 つのモデル クラスまたは Bean を用意する必要があるか、またはセッションを使用して各ページ情報を保存し、それが永続化されるまでセッションに保持する必要があるかということです。

または、1 つのモデル クラスを使用する方が適切ですが、複数のコントローラー/Bean を使用して各ページからのデータ フローを制御します。どれをお勧めしますか?私の質問に答えるために既に実装されている設計パターンはありますか? より良いアイデアがあれば、遠慮なく議論してください。

4

2 に答える 2

3

すでに述べたように、2つのアプローチがあります。どちらを使用するかは、データサイズやその他の要件 (ユーザーが後で戻ってきて、離れた場所から続行できるかどうかなど) によって異なります。モデルとコントローラーは 1 つだけである必要はありません。適切に設計できます。

a)セッション内の各画面からのデータを保存します。

  • 長所: 不要なデータが db に永続化されません。ユーザーが画面上を行き来するときにセッション内からデータを操作できるため、より高速になります。

  • このアプローチの短所: セッション内の情報が多すぎると、メモリの問題が発生する可能性があります。セッションのフェイルオーバー中はあまり役に立たない可能性があります。この機能が必要な場合、ユーザーは再度ログインして、ユーザーが離れた場所から続行することはできません。

b)ユーザーの移動に合わせて各画面データを永続化します。

  • 長所: セッションが軽くなるため、最小限の関連情報のみがセッションに保存されます。ユーザーは再度ログインして、ユーザーが離れた場所から続行できます。別の進行中の db テーブルを使用してこの情報を保存し、最終送信時にのみデータを実際のテーブルに挿入/更新できます。そうしないと、db には未送信のデータが多数含まれます。このようにして、進行中のデータベースを定期的にクリーンアップできます。
  • 短所: ユーザーがサブミットしなくても、画面ごとに永続化および取得するために db 呼び出しを行う必要があります。
于 2013-04-12T21:01:23.713 に答える
2

フォームの状態を保存するための HTTP セッションの使用については正しいです。

またはセッションを使用して各ページ情報を保存し、永続化されるまでセッションに保持しますか?

この要件のため:

不完全なデータを永続化するべきではありません

はどうかと言うと

すべてのデータを格納するために 1 つのモデル クラスまたは Bean が必要ですか?

必要に応じてこれをモデル化できます。おそらく、フローを表すモデルと、各ページのオブジェクトです。データがページ間でどのように分割されるかによって異なります。

上記のコメントで述べたように、これを実現するために WebFlow を利用できる場合があります。ただし、これは最終的には Spring MVC 上の軽量フレームワークにすぎません。

于 2013-04-12T20:46:27.527 に答える