• ベストアンサー

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

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

  • Java
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • 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のタグのメソッド部分(この場合、繰り返し処理を実行するメソッド)は完了まで稼動を続けている、という解釈で合っているのでしょうか。

関連するQ&A

  • javaサーブレットでjspへのフォワード処理と、ファイルに出力処理を行いたいのですが。。

    今javaサーブレットとjspでツール作成中です。 DBにアクセスして、その内容をCSVファイルに書き出すというツールなのですが、サーブレットではjspにフォワードという処理と、ファイルに出力という処理の二つを同時に行うことができるのでしょうか。 たくさんの本やサイトにそれぞれ片方の処理だけする場合は載っているのですが、両方を並行して処理させる場合のサーブレットの書き方がわかりません。。 jspからの情報をもとにサーブレットでDAOを生成、DBにアクセスし、検索結果をDTO(一行の情報はBean)に格納し、それをサーブレットからjspにフォワード&CSV出力というものを作りたいと思っています。 よろしくお願いします。

  • サーブレットからJSPの呼び出しについて

    こんにちは。 JSPの呼び出しについて質問です。 サーブレットで RequestDispatcher dispatcher = req.getRequestDispatcher("/jsp/java.jsp"); dispatcher.include(req, res); としてJSPファイルを呼び出そうとしているのですが、うまくいきません。コンパイルは通ります。 dispatcher.include(req, res); の部分で例外処理にいってるのでそこがおかしいようですが。urlの指定もjspファイルの内容も何度も確認したのですがミスはないみたいで原因がわかりません。 またTomcatのログファイルlocalhost_logを見ると 2002-07-11 16:05:35 ApplicationDispatcher[/DB] サーブレット jsp のServlet.service()は例外を投げました という文が出力されています。

    • ベストアンサー
    • Java
  • JSPとサーブレット

    書き込み一覧が表示してあるJSPの入力フォームがあり、そこで入力をして「書き込み」ボタンを押すと入力したデータが、DBへ登録するサーブレットへ飛び、入力をした画面上では「書き込みました」のようなHTML画面が表示されるとします。その画面で「TOPへ戻る」ボタンを押すと、今度は検索サーブレットが動き、DBから最新の一覧が引っ張り出され、登録更新後の書き込み一覧JSPが画面上に出るとします。ここで質問なのですが、「書き込み」ボタンを押すと同時に登録サーブレットと検索サーブレットを動かすことは出来ないのでしょうか?理想としては、「書き込みました」のようなHTML画面は使用せず、一気に更新後の一覧を表示させたいのです。 この辺の知識はあんまり無いもので、具体的な記述方法を教えて頂くと嬉しいです。

    • ベストアンサー
    • Java
  • フォーム上で押されたボタンによってサーブレットの処理を変えたい

    Urizakaです。 さて、さっそく質問です。 JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された ボタンによってサーブレット内での処理が切り替わる(具体的には、違う SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成 する)ようにしたいのですが、どのようにすればよいのでしょうか? もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは 考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので …宜しくお願いします。

    • ベストアンサー
    • Java
  • JSPのページ移動

    書き込み一覧が表示してあるJSPの入力フォームがあり、そこで入力をして「書き込み」ボタンを押すと入力したデータが、DBへ登録するサーブレットへ飛び、入力をした画面上では「書き込みました」のようなHTML画面が表示されるとします。その画面で「TOPへ戻る」ボタンを押すと、今度は検索サーブレットが動き、DBから最新の一覧が引っ張り出され、登録更新後の書き込み一覧JSPが画面上に出るとします。ここで質問なのですが、「書き込み」ボタンを押すと同時に登録サーブレットと検索サーブレットを動かすことは出来ないのでしょうか?理想としては、「書き込みました」のようなHTML画面は使用せず、一気に更新後の一覧を表示させたいのです。

  • 確認ダイアログを表示出来ない

    jspファイルからJavaサーブレットへ削除対象情報を渡し、削除処理をしています。 submit処理の際、Javascriptでconfirmを利用して削除確認ダイアログを表示させたいのですが、表示が行われず、Javaサーブレットの処理が正しく実行されてしまいます。jspファイルをHTMLで表示させたところ、削除情報パラメータは見かけ上は正しく渡されているようです。以下のJavascriptの記述で問題となる部分が有るでしょうか? 削除対象確認画面nnnn.jspより呼び出されるjavascript check_nnnn.jsの記述は次の通りです。 taisyo_Noの値の先頭から8バイトにキー項目、9バイト目より確認情報をセットしています。 ************ function check_nnnn() { wkname = document.formnnnn.taisyo_No.value.substring(8); wkres = confirm("削除対象は次の通りです。" + "\n\n" + "対象:" + wkwname); if (!wkres){alert("確認画面に戻ります");return false;} } ******************** 尚、ブラウザはIE6.0を使用しております。

  • JSPでHTMLの表示が優先されてしまいサーブレット内でのprintlnの出力内容が見れない

    お世話になっております。 サーブレット内でのprintlnの出力内容が見たいのですが JSPでHTMLの表示が優先されてしまい、出力結果が見れません。 ブレークポイントを使ったりしてみたのですが、表示されませんでした。 何か良い方法がありましたら教えてください。 よろしくお願いします。

  • jspでXMLファイルの読み書きは?

    JavaのJSPで、XMLファイルを読み書きしたいと思っております。 サーブレットでは、「import javax.xml.parsers.*;」などを読み込んで処理してますが、 JSPでも、同じように Import してやればよいのでしょうか? また、JSPでも、「Try~catch 」のようなことは、できるのでしょうか? PHPでは、「simplexml_load_file」を使っていました。 Javaには、詳しくないので、お分かりになる方がいらっしゃいましたら、お教えください。

    • ベストアンサー
    • Java
  • JSPが表示されません

    Apache2+Tomcat4.1+j2sdk1.4.2_06+EclipseでJSPとサーブレットのページを作ろうとしています。 HTMLファイルのフォームの内容をJSPファイルに送り、ServletでDBと参照、登録という流れを作ろうとしています。 aaa.html(ユーザーがデータを入力) ↓(1)フォームの内容を転送 bbb.jsp((2)htmlからの入力をccc.classに中継、(7)返り値を表示) ↓(3)メソッド呼び出し ↑(6)返り値を返す ccc.class(重複の有無確認やDBへの登録メソッド) ↓(4)SQL ↑(5)結果 DB(PostgresSQL) 本に書いてあるのを真似たらlocalhost上ではちゃんと動くようになりました。 つまり、下記のようにaaa.htmlからの転送先をlocalhost:8080/bbb.jspに指定するとうまく作動します。 <form name="form1" method="post" action="http://localhost:8080/bbb.jsp"> しかしながらこれではローカルでしか使えないので転送先を相対パスで指定したらうまくいきません。 <form name="form1" method="post" action="../bbb.jsp"> 外部から参照できるURL(サーバのIPアドレス)でもダメです。 <form name="form1" method="post" action="http://***.***.**.**/bbb.jsp"> 症状としては.jspファイルの最初のHTMLの記述はちゃんと動いているようで画面の色等はちゃんと変わります。 <%.....%>で囲まれたJAVAの記述がまったく作動しません。 /work/org/apache/jspに発生する中間ファイルもlocalhostのときには出来るのですが相対パスにすると出来ません。 どうしたらいいのでしょうか? ひょっとしたらとても初歩的なことかもしれませんがご存知の方がいらっしゃいましたらご教授願いたいと思います。

    • ベストアンサー
    • Java
  • サーブレットからJSPへフォワード 画像が・・・

    サーブレットからJSPへフォワード 画像が・・・ javaの勉強をしながらサーブレットやJSPを使ったページを作ってるのですが、サーブレットで処理を行った後にJSPへ sc.getRequestDispatcher("/index.jsp").forward(req, res); で転送したら画像が表示されません。 JSPで記述したページを直接開いたりresponse.Redirect(URL)で遷移した場合は画像もちゃんと表示されます。画像だけではなくスタイルシート等も読み込んでいないようなのです・・・orz どうしたらいいのでしょうか? 【ファイル構成】 [プロジェクトフォルダ]  JSPファイル(.jsp)  [image]   画像ファイル  [style]   スタイルシート  [WEB-INF]   [classes]    サーブレットファイル(.class)

    • ベストアンサー
    • Java