Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

gsoft.xervlet
Class MultipartResponse  view MultipartResponse download MultipartResponse.java

java.lang.Object
  extended bygsoft.xervlet.MultipartResponse

public class MultipartResponse
extends java.lang.Object

A utility class to generate multipart/x-mixed-replace responses, the kind of responses that implement server push. Note that Microsoft Internet Explorer does not understand this sort of response.

To use this class, first construct a new MultipartResponse passing to its constructor the servlet's response parameter. MultipartResponse uses the response object to fetch the servlet's output stream and to set the response's content type.

Then, for each page of content, begin by calling startResponse() passing in the content type for that page. Send the content for the page by writing to the output stream as usual. A call to endResponse() ends the page and flushes the content so the client can see it. At this point a sleep() or other delay can be added until the next page is ready for sending.

The call to endResponse() is optional. The startResponse() method knows whether the last response has been ended, and ends it itself if necessary. However, it's wise to call endResponse() if there's to be a delay between the time one response ends and the next begins. It lets the client display the latest response during the time it waits for the next one.

Finally, after each response page has been sent, a call to the finish() method finishes the multipart response and sends a code telling the client there will be no more responses.

For example:

 MultipartResponse multi = new MultipartResponse(res);
  
 multi.startResponse("text/plain");
 out.println("On your mark");
 multi.endResponse();
  
 try { Thread.sleep(1000); } catch (InterruptedException e) { }
  
 multi.startResponse("text/plain");
 out.println("Get set");
 multi.endResponse();
  
 try { Thread.sleep(1000); } catch (InterruptedException e) { }
  
 multi.startResponse("image/gif");
 ServletUtils.returnFile(req.getRealPath("/images/go.gif"), out);
  
 multi.finish();
 


Field Summary
(package private)  boolean endedLastResponse
           
(package private)  javax.servlet.ServletOutputStream out
           
(package private)  javax.servlet.http.HttpServletResponse res
           
 
Constructor Summary
MultipartResponse(javax.servlet.http.HttpServletResponse response)
          Constructs a new MultipartResponse to send content to the given servlet response.
 
Method Summary
 void endResponse()
          Ends a single response.
 void finish()
          Finishes the multipart response.
 void startResponse(java.lang.String contentType)
          Begins a single response with the specified content type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

res

javax.servlet.http.HttpServletResponse res

out

javax.servlet.ServletOutputStream out

endedLastResponse

boolean endedLastResponse
Constructor Detail

MultipartResponse

public MultipartResponse(javax.servlet.http.HttpServletResponse response)
                  throws java.io.IOException
Constructs a new MultipartResponse to send content to the given servlet response.

Method Detail

startResponse

public void startResponse(java.lang.String contentType)
                   throws java.io.IOException
Begins a single response with the specified content type. This method knows whether the last response has been ended, and ends it itself if necessary.


endResponse

public void endResponse()
                 throws java.io.IOException
Ends a single response. Flushes the output.


finish

public void finish()
            throws java.io.IOException
Finishes the multipart response. Sends a code telling the client there will be no more responses and flushes the output.