• ベストアンサー

JSPで「処理中」をブラウザに表示

サーブレット+DB、JSPでプログラムをしています。 以下の質問(CGIが対象です) http://www.okweb.ne.jp/kotaeru.php3?q=173368 と似たようなことを、JSPで行うにはどうしたらよいでしょうか。 サーブレットの処理中(長い処理)に、「処理中」のメッセージを表示して、終了したら完了ページに飛ばしたいのです。 「処理中」の表示はJSPでもJavaScriptでも、サーブレットから直接出力しても構いません。 さらに言えば、サーブレットではfor文で処理を回しているので、「○%完了」などが表示できたら最高です。 よろしくお願いします。

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

  • ベストアンサー
  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.3

一度クライアントに返されてしまった表示を書き換えるとなるとJavaScriptを使わなくちゃだめかもしれませんね。 もしくは [i]を表示するJSP(or HTML) ↓ 適当な時間を待って自動的にserverに通信 if(処理が終わっていない){ [i+1]を表示するJSP(or HTML) }else{ //処理が終わっていれば 処理終了を表示するJSP(or HTML) } というのを繰り返せばできるのではないでしょうか。

その他の回答 (2)

  • chi-kon
  • ベストアンサー率43% (58/132)
回答No.2

こういう感じのことでしょうか... JSPの動く環境でやってみてください。 <HTML> <% for(int i=0;i<10;i++){ out.write(String.valueOf(i)+"<BR>"); out.flush(); Thread.sleep(2*1000); } %> </HTML>

Goody-goody
質問者

お礼

遅くなりました。ありがとうございます。 やってみましたが、おもしろいですね。 ただ、1,2,3・・・と出るのではなく、1⇒2⇒3・・・と切り替わってほしいのですが。 他の件で使えそうなので、参考にさせていただきます。

回答No.1

掲示板の書き込みのような処理は、基本的に以下の流れ(画面遷移ベース) で実行することが多いです。  書き込み画面 ⇒ 処理実行画面 ⇒ (実行終了画面) ⇒ 処理後に遷移したい画面 ここで重要なのは『処理実行画面』です。 この画面の基本構成は…  ・処理実行部分(ここをJSPで記述する)  ・処理中表示部分(HTMLでOK) の2つになります。 処理が終了したら、表示を『処理終了』とするか、処理終了画面に遷移させればよいのです。 ○%完了の表示は、処理実行部分のfor文の中でパーセンテージ計算をし、 out.print なり何なりで%の数値の部分だけを書き換えれば 良いかと思います。 大雑把ですが、こんなイメージで設計してみれば良いかと思いますよ。

Goody-goody
質問者

お礼

早速の回答ありがとうございます。 実行画面(「実行中です・・・」)のHTMLを出力したあとで、処理を続ける、というのは可能なのでしょうか。(並行処理ということですよね) 処理が終わった後にHTMLを出力する、という一般的なものしか知らないもので・・・ JSPでは、HTML部分は先に表示され、JSPのタグのメソッド部分(この場合、繰り返し処理を実行するメソッド)は完了まで稼動を続けている、という解釈で合っているのでしょうか。