I'm having problems using ServletResponse.flushBuffer() and Tomcat 4.0b7.
The following servlet demonstrates.

What I want it to do is print out the title and the "Test 1" line. Then,
pause for 10 seconds and print out the "Test 2" line. It doesn't work the
first time through. However, if I then hit Refresh in my browser after going
through it once, you can see clearly that it prints out the first line
pauses and prints out the last line as I would expect it to. Is this a bug?
Can someone else reproduce this?

The reason I want to get this to work is that I have a servlet where I have
a page with a Submit button on it, then on the next page, there is sometimes
a few second lag while performing an update on a directory/database. I've
had problems in the past where users click the Submit multiple times because
they think it's stuck. Actually, it's not, it's just slow. So, what I want
to do is print out at least the top part of the page so that the Submit
button/previous page is no longer available for them to click on. If someone
could fix this for the final version of Tomcat 4, I would greatly appreciate
it. Either that or, if anyone else knows of a work around, that would be
appreciated too.

Thanks, Jon

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SimpleServlet extends HttpServlet
{
 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws
IOException
 {
  try
  {
   resp.setContentType("text/html");

   PrintWriter pw = resp.getWriter();

   pw.println("<html><head><title>SimpleServlet</title></head><body>");

   pw.println("<p>Test 1</p>");

   pw.flush();

   resp.flushBuffer();

   Thread.sleep(10000);

   pw.println("<p>Test 2</p>");

   pw.println("</body></html>");

   pw.close();
  }
  catch(Exception e)
  {
   System.out.println(e);
  }
 }
}


Reply via email to