2

いくつかのファイルをサーバーにアップロードし、いくつかのコードを実行して、結果のファイルをユーザーに電子メールで送信する単純なWebアプリを作成しています。ただし、ユーザーがいくつかのファイルをアップロードしてからコードの実行に数時間かかることがあるため、それらを通知ページに転送したいと思います。その後、サーバーで処理が続行されている間、ブラウザーを閉じて、結果の電子メールを待つことができるはずです。

ファイルをアップロードした後、私はこのコードを持っています:

request.setAttribute("notification", details);
RequestDispatcher view = request.getRequestDispatcher("views/notification.jsp");
view.forward(request, response);

次に、処理コードが続きます。問題は、すべての処理が完了するまでビューが転送されないことです。ユーザーをフォームページにぶら下げたままにします。ユーザーがブラウザを閉じても処理は続行されますが、最初にユーザーを通知に転送したいと思います。

4

2 に答える 2

2

アップロードしたファイルを非同期で処理する必要があります。サーブレットは、リクエストが処理され、サーブレットを離れた後にのみ接続が閉じられると想定します。サーブレット内で処理コードを実行すると、ユーザーがビューを取り戻すことができない場合があります。

非同期処理には、通常のスレッド、スレッドプール、JMS ...から開始するいくつかのオプションがあります。ファイルを取得し、バックグラウンドで実行されているスレッドに送信して、処理がブロックされないようにし、ビューをすぐに返します。

于 2012-07-31T17:54:18.180 に答える
0

EclipseとNetBeansを使用して新しいサーブレットを作成すると、応答オブジェクトに気付くでしょう。オンラインでそれについて読むと、応答オブジェクトを使用してすべての回答が見つかります。

于 2013-01-15T22:43:01.580 に答える