GzipUtilities传输数据

来源:互联网 发布:oracle数据库 编辑:程序博客网 时间:2024/06/07 08:40

下面是GzipUtilities能传输大量数据!

import java.io.*;
import java.util.zip.*;
import javax.servlet.*;
import javax.servlet.http.*;
/*
  判断是否能传递压缩数据
*/
public class GzipUtilities
{
 //判断客户端浏览器是否支持gzip压缩格式的数据,
 //如果支持,可将传递压缩数据,这样比没压缩数据的传输速度快。
 public static boolean isGzipSupported(HttpServletRequest request) {

  String encodings = request.getHeader("Accept-Encoding");
  return ((encodings != null)&&(encodings.indexOf("gzip") !=-1));
 }
   
 //判断客户端浏览器是否屏蔽压缩数据,即传递压缩数据时,客户端是否能显示
 public static boolean isGzipDisabled(HttpServletRequest request) {

  String flag = request.getParameter("disableGzip");
  return ((flag != null)&&(!flag.equalsIgnoreCase("false")));
 }

   //返回压缩流
 public static PrintWriter getGzipWriter(HttpServletResponse response)
        throws IOException {
        return (new PrintWriter(new GZIPOutputStream(response.getOutputStream())));
 }
}

_____________________________________________________________________________

下面是LongServlet类测!

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

public class LongServlet extends HttpServlet {

 public void doGet(HttpServletRequest request,HttpServletResponse response)
               throws ServletException, java.io.IOException {

            PrintWriter out;
   if(GzipUtilities.isGzipSupported(request) &&
    !GzipUtilities.isGzipDisabled(request)) {
    out = GzipUtilities.getGzipWriter(response);
    response.setHeader("Content-Encoding","gzip");
   }
   else {
    out = response.getWriter();
   }
   out.println("<html><body>");
   String str = "I love you!!";
   for(int i=0;i<10000;i++) {
    out.println(str);
   }
      
   out.println("</body></html>");
   out.close();
  
 }

 public void doPost(HttpServletRequest request,HttpServletResponse response)
               throws ServletException, java.io.IOException {
  doGet(request,response);
 }

}
 

原创粉丝点击