GzipUtilities快速傳輸大量資料的例子!
//GzipUtilities傳輸資料
下面是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);
}
}