package coreservlets; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; /** Illustrates the value of persistent HTTP connections for * pages that includes many images, applet classes, or * other auxiliary content that would otherwise require * a separate connection to retrieve. *

* Taken from Core Servlets and JavaServer Pages * from Prentice Hall and Sun Microsystems Press, * http://www.coreservlets.com/. * © 2000 Marty Hall; may be freely used or adapted. */ public class PersistentConnection extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); ByteArrayOutputStream byteStream = new ByteArrayOutputStream(7000); PrintWriter out = new PrintWriter(byteStream, true); String persistenceFlag = request.getParameter("usePersistence"); boolean usePersistence = ((persistenceFlag == null) || (!persistenceFlag.equals("no"))); String title; if (usePersistence) { title = "Using Persistent Connection"; } else { title = "Not Using Persistent Connection"; } out.println(ServletUtilities.headWithTitle(title) + "\n" + "

" + title + "

"); int numImages = 100; for(int i=0; i"); if (usePersistence) { response.setContentLength(byteStream.size()); } byteStream.writeTo(response.getOutputStream()); } private String makeImage(int n, boolean usePersistence) { String file = "/servlet/coreservlets.ImageRetriever?gifLocation=" + "/bullets/bullet" + n + ".gif"; if (!usePersistence) file = file + "&usePersistence=no"; return("\"\""); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }