1, 工具类:测试客户端是否支持GZIP编码压缩方式 & 获得支持GZIP的PrintWriter对象
package freebsd;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Utilities {
/*
* 测试客户端浏览器是否支持gzip的编码方式
*/
public static boolean isSurpported(HttpServletRequest request)
{
String encodingString = request.getHeader("Accept-Encoding");
return (encodingString!=null) && (encodingString.indexOf("gzip")!=-1);
}
/*
* 取得一个压缩的PrintWriter
*/
public static PrintWriter getWriter(HttpServletResponse response) throws IOException
{
ServletOutputStream sos = response.getOutputStream();
GZIPOutputStream gzipos = new GZIPOutputStream(sos);
return new PrintWriter(gzipos);
}
}
2,Servlet类,产生一个长字符串,然后在html页面中请求该servlet:
import freebsd.*;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class ServletGzip
*/
public class ServletGzip extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ServletGzip() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setStatus(response.SC_OK);
PrintWriter out;
if(Utilities.isSurpported(request))
{
out = Utilities.getWriter(response);