前提・実現したいこと
javaで動的プログラムを作成しています。
マルチスレッドで、複数のレスポンスを返す方法がわかりません。
発生している問題・エラーメッセージ
画面が更新されない
該当のソースコード
java
1package pack; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10 11/** 12* Servlet implementation class ShowDateServlet 13*/ 14@WebServlet(name = "ShowDate", urlPatterns = { "/ShowDate" }) 15public class Sample extends javax.servlet.http.HttpServlet 16 implements javax.servlet.Servlet { 17 private static final long serialVersionUID = 1L; 18 19 protected void doGet(HttpServletRequest request, 20 HttpServletResponse response) 21 throws ServletException, IOException { 22 23 System.out.println("Main start"); 24 25 response.setContentType("text/html"); 26 27 response.setStatus(HttpServletResponse.SC_ACCEPTED); 28 29 PrintWriter out = response.getWriter(); 30 out.println(""); 31 out.println(""); 32 out.println(new java.util.Date()); 33 out.println(""); 34 out.println(""); 35 36 //サブをnew 37 SampleSub ss = new SampleSub(); 38 39 //サブスレッドスタート 40 ss.start(); 41 42 43 } 44}
java
1package pack; 2 3public class SampleSub extends Thread{ 4 5 public void run() { 6 System.out.println("Sub start"); 7 8 //10秒待機 9 try { 10 Thread.sleep(10000); 11 } catch (InterruptedException e) { 12 e.printStackTrace(); 13 } 14 15 System.out.println("Sub send"); 16 17 //ここで再度レスポンスを返したい 18 19 } 20}
試したこと
response.setStatus(HttpServletResponse.SC_ACCEPTED);
上記を1回目のレスポンスを返す前に記載して実行してみましたが、
一度レスポンスを返した後のレスポンスは実行されず、ブラウザも更新されませんでした。
補足情報(FW/ツールのバージョンなど)
Tomcatは8.5を使用しています。
回答2件
あなたの回答
tips
プレビュー