gzip文本压缩方案能够极大地减少html页面的大小。大多数浏览器都知道如何处理gzip压缩后的内容,因此服务器可以对文档进行压缩,使得在网络上传送的文档更小,之后浏览器进行自动解压缩,并以正常的方式进行显示处理生成的结果,发送这种压缩后的内容,内购有效的节省时间,因为在服务器段压缩文档所需的时间,以及以后在客户端解压缩所需的时间们一般会小于在下载上节省的时间看,尤其是在使用拨号连接的情况下。
代码实现:
压缩类
public class GzipUtilities {
public static boolean isGzipSupported(HttpServletRequest request){
String encoding = request.getHeader("Accept-Encoding");
return((encoding != null)&&(encoding.indexOf("gzip") != -1));
}
public static boolean isGzipdisabled(HttpServletRequest request){
String flag = request.getParameter("disableGzip");
return ((flag != null)&&(!flag.equals("false")));
}
public static PrintWriter getGzipWriter(HttpServletResponse response)throws IOException{
return(new PrintWriter(new GZIPOutputStream(response.getOutputStream())));
}
}
Servlet类:
public class LonServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out;
if(GzipUtilities.isGzipSupported(request)&&!(GzipUtilities.isGzipdisabled(request))){
out = GzipUtilities.getGzipWriter(response);
response.setHeader("Content-Encoding", "gzip");
}else{
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 POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}