使用GZIP压缩的方式向客户端传输响应数据
来源:互联网 发布:帝国cms多图上传 编辑:程序博客网 时间:2024/04/29 08:40
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);
response.setHeader("Content-Encoding", "gzip");
}else {
out = response.getWriter();
}
StringBuilder sBuilder = new StringBuilder();
for(int i=0; i!=5000; ++i)
{
sBuilder.append("Printing the long string... ...!");
}
out.println(sBuilder);
out.close();
}
}
- 使用GZIP压缩的方式向客户端传输响应数据
- 向客户端浏览器发送压缩后的数据(gzip)
- HTTP方式下的Gzip压缩传输
- ext_js使用GZIP压缩传输
- 在Unity3d中使用GZip来压缩传输数据
- 在Unity3d中使用GZip来压缩网络传输数据
- 在Unity3d中使用GZip来压缩传输数据
- android接口中json数据的传输中使用gzip压缩
- Android客户端向Python服务器以POST方式传输数据
- 以Gzip的形式通过服务器向客户端发送数据
- 演示gzip压缩响应正文数据
- android开发中使用GZIP压缩传输
- android开发中使用GZIP压缩传输
- 开启gzip压缩传输
- 服务器使用Gzip压缩数据,加快网络传输(Java 例子)
- 服务器使用Gzip压缩数据,加快网络传输(Java 例子)
- 服务器使用Gzip压缩数据,加快网络传输(Java 例子)
- 服务器使用Gzip压缩数据,加快网络传输(Java 例子)
- rtmp协议的简易服务器
- linux下configure命令详细介绍
- SecureCRT 常用命令
- 获取本机所有接口和所有IP地址的函数
- 顺序查找
- 使用GZIP压缩的方式向客户端传输响应数据
- poj1321 棋盘问题,状态压缩dp
- 简单而直接的Python web 框架:web.py
- 算法效率分析
- 电子设计之AVR+Proteus的安装(一)
- 弹出窗口并将窗口中选择的值返回到父窗口中
- JDBC的批处理操作三种方式
- Python 的 Socket 编程教程
- iphone聊天用几种图形(表情)与文字混排的实现与比较