3
<%
response.getWriter().write("Hello world<BR>\n");
response.getWriter().flush();
wait(10000); // 10 seconds
response.getWriter().write("Goodbye happiness.<BR>\n");
%>

期待される結果: ブラウザーに「Hello World」が表示されます。10秒後、「さようなら幸せ」。表示されています。

何が起こるか: ページの読み込みが 10 秒間続き、最後に「Hello World Goodbye Happiness」が表示されます。

私がやりたいことは、さまざまなマイルストーンに到達したときの長時間実行オペレーションのステータスを表示することです。これは可能ですか?

Windows 7 で Eclipse EE (Tomcat を使用) を使用しています。

4

3 に答える 3

3
<html>
<body>
 You didn't tell us which browser you were using. Chrome and Firefox behave as you   expect them to do. 
But, IE needs some filler at the start of the page. IE will wait for a certain amount of content to render.
I am testing with IE8 and this works for me.
<br/>
<%
   out.print("Hello world<br/>");
   out.flush();
   Thread.sleep(3000); // 3 seconds for easy testing.
   out.print("Goodbye happiness.");
 %>
 </body>
 </html>
于 2012-07-12T03:22:40.403 に答える
1

ここでの問題は だと思いますwait(10000); // 10 seconds。どのような応答が表示されているかわかりませんが、実行する前にロックする必要がありますwait()wait(10000); 行を次のいずれかに変更する必要があります。

synchronized (this){
    wait(10000); //10 secs
}

また

Thread.sleep(10000);

それでも機能しない場合でも、ライターをオーバーライドし、閉じるまでデータをバッファリングしている背後に何かがあるかどうかを確認する必要があります。

于 2012-07-12T05:02:13.480 に答える
0

コンテンツを作成する前に、「Transfer-Encoding:chunked」ヘッダーを設定する必要があります。

response.setHeader("Transfer-Encoding", "chunked");
于 2012-07-12T02:06:28.787 に答える