压缩步骤:
1.找一个内存缓冲字节流
2.将数据压缩到缓冲字节流中
3.从内存缓冲流中取出数据
4.通知浏览器的压缩方式以及文本大小
5.以字节流输出
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletDemo3 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data="sdfdsgfdgfffffffffffffffffffffertdfgfffffffffffffffffertdfgfffffffffffffffffertdfgfffffffffffffffffertdfgfffffffffffffffffertdfgfffffffffffffffffertdfgfffffffffffffffffertdfgfdhgjsdjg;e0ffffffffffffffertdfgfdhgjsdjg;e0ffffffffffffffertdfgfdhgjsdjg;e0ffffffffffffffertdfgfdhgjsdjg;e0tiksdkv;ler0tyirpgldsdgg;jdogsd";
//1.找一个字节缓冲流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//2.将数据压缩到字节缓冲流中
GZIPOutputStream gos = new GZIPOutputStream(baos);
byte [] b = data.getBytes();
System.out.println("压缩前数据大小: "+b.length);
gos.write(b);
//记得关闭流
gos.close();
//3.从字节缓冲流中取出数据
b = baos.toByteArray();
System.out.println("压缩后的数据大小: "+b.length);
//4.通知浏览器压缩方式,以及文本大小
response.setHeader("Content-Encoding", "gzip");
response.setContentLength(b.length);
//5.用字节流输出
ServletOutputStream out = response.getOutputStream();
out.write(b);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}