怎么让才能不让一直处于连接状态.

解决方案 »

  1.   

    MultipartResponse.java:
    import java.io.IOException;import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;public class MultipartResponse {
    HttpServletResponse res;
    ServletOutputStream out;
    boolean endedLastResponse = true; public MultipartResponse(HttpServletResponse response) throws IOException {
    // Save the response object and output stream
    res = response;
    out = res.getOutputStream(); // Set things up
    res.setContentType("multipart/x-mixed-replace;boundary=End");
    out.println();
    out.println("--End");
    } public void startResponse(String contentType) throws IOException {
    // End the last response if necessary
    if (!endedLastResponse) {
    endResponse();
    }
    // Start the next one
    out.println("Content-Type: " + contentType);
    out.println();
    endedLastResponse = false;
    } public void endResponse() throws IOException {
    // End the last response, and flush so the client sees the content
    out.println();
    out.println("--End");
    out.flush();
    endedLastResponse = true;
    } public void finish() throws IOException {
    out.println("--End--");
    out.flush();
    }}Test.Java:
    import java.io.IOException;import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    public class Test extends HttpServlet { private static final long serialVersionUID = -1037064871710920629L; public Test() {
    super();
    } public void destroy() {
    super.destroy();
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { int i=0;
    ServletOutputStream out = response.getOutputStream();
    MultipartResponse multi = new MultipartResponse(response);
    multi.startResponse("text/html ");
    out.println("lr ");// 这里输出的内容是网页的文件头
    multi.endResponse();
    while (true) {
    // 一些判断条件
    try {
    Thread.sleep(10000);
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    multi.startResponse("text/html ");
    out.println("line:"+i);
    multi.endResponse();
    i=i+1;

    /*
     * response.setContentType("text/html"); PrintWriter out = response.getWriter();
     * out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01
     * Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A
     * Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is ");
     * out.print(this.getClass()); out.println(", using the GET method");
     * out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close();
     */
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    this.doGet(request, response);
    } public void init() throws ServletException {}}web.xml:
    [code=XML]
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>Test</servlet-name>
        <servlet-class>Test</servlet-class>
      </servlet>  <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/Test</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>/Test</welcome-file>
      </welcome-file-list>
    </web-app>[/code]