尝试在某个时间间隔内打印在网页上,但它一直在等待并立即打印

时间:2014-01-27 03:30:34

标签: java servlets

我试图先将输出作为苹果,然后香蕉以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();
    }
}

2 个答案:

答案 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