我试图先将输出作为苹果,然后香蕉以2秒的时间间隔再次获得香蕉......但是在页面等待10秒后我在网页上获得的实际输出(5 * 2secs)。我是servlets的新手。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("apple");
pw.println("<br>");
for(int i = 0 ; i < 5; i++){
Thread.sleep(2000);
pw.println("banana");
pw.println("<br>");
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
Servlet代码在服务器上运行EXCLUSIVELY,您看到的输出是运行servlet的结果。代码无法在浏览器中运行。
答案 1 :(得分:0)
你正在尝试对你的servlet做一些异步支持,但是你做错了(thread.sleep要打开当前线程,并在刷新操作后写任何东西会导致IllegalStateException)你应该使用新的servlet3.0 api如果你想发送给客户端异步响应,我的意思是等待一段时间发送另一部分响应。您应该阅读Servlet3.0(不确定是否可以使用以前的API完成,但我确信这适用于Servlet3.0异步支持)
http://docs.coreservlets.com/servlet-3.0-api/ \
需要在web.xml中启用异步支持或使用@WebServlet注释。
这个tuto是一个很好的起点。 http://www.journaldev.com/2008/async-servlet-feature-of-servlet-3