使用Gzip压缩数据,加快页面访问速度

             在返回的json数据量大时,启用Gzip压缩,可以提高传输效率。下面为Gzip压缩对json字符串压缩并输出到页面的代码。

一、代码

	/** 向浏览器输出字符串响应数据,启用gzip压缩 */
protected void writeResponseDataStr(String data){
/** 获取响应对象 */
HttpServletResponse response = ServletActionContext.getResponse();
/** 设置响应内容类型 */
response.setContentType("text/html;charset=utf-8");
try {
/** 告诉浏览器,服务器响应的数据是用GZIP压缩的 */
response.setHeader("Content-Encoding", "gzip");
//GZIP压缩的原理是:将数据全部压缩进内存输出流中,再从将内存输出流中的数据输出
/** 创建内存输出流的容器 */
ByteArrayOutputStream bos = new ByteArrayOutputStream();
/** 创建GZIP压缩对象 */
GZIPOutputStream gzip = new GZIPOutputStream(bos);
/** 进行压缩 */
gzip.write(data.getBytes("utf-8"));
gzip.flush();
gzip.close();
/** 向浏览器输出响应数据 */
response.getOutputStream().write(bos.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
};
 
1
    /** 向浏览器输出字符串响应数据,启用gzip压缩 */ 
2
    protected void writeResponseDataStr(String data){
3
        /** 获取响应对象 */
4
        HttpServletResponse response = ServletActionContext.getResponse();
5
        /** 设置响应内容类型 */
6
        response.setContentType("text/html;charset=utf-8");
7
        try {
8
            /** 告诉浏览器,服务器响应的数据是用GZIP压缩的 */
9
            response.setHeader("Content-Encoding", "gzip");
10
            //GZIP压缩的原理是:将数据全部压缩进内存输出流中,再从将内存输出流中的数据输出
11
            /** 创建内存输出流的容器 */
12
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
13
            /** 创建GZIP压缩对象 */
14
            GZIPOutputStream gzip = new GZIPOutputStream(bos);
15
            /** 进行压缩 */
16
            gzip.write(data.getBytes("utf-8"));
17
            gzip.flush();
18
            gzip.close();
19
            /** 向浏览器输出响应数据 */
20
            response.getOutputStream().write(bos.toByteArray());
21
        } catch (IOException e) {
22
            e.printStackTrace();
23
        }
24
    };

上一篇:《深入理解Java虚拟机》-----第2章 Java内存区域与内存溢出异常


下一篇:springboot的三种启动方式