`
xiangxingchina
  • 浏览: 523674 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

服务器使用Gzip压缩数据,加快网络传输(Java 例子)

    博客分类:
  • gzip
 
阅读更多

The next version of the Project will provide support for gzip in order to faster speed of data transmission on the network。在我们的项目中,添加对gzip的支持,是为了加快数据在网络中的传输速度。


If you need to transfer data using gzip, you must be setting request header "Accept-Encoding"="gzip". Thus,  you will get a response, which include the response header name "Content-Encoding" and value "gzip", and need to ungzip the response data. Besides, the response header name "Content-Length" also will be returned.使用gzip,首先要设置请求消息头Accept-Encoding为gzip。这样,你将会得到一个响应,根据消息头 Content-Encoding为gzip你可以知道,传输过来的数据是经过gzip压缩的。另外,消息头Content-Length会告诉你压缩后 的数据长度。
   
   A example using gzip implemented by Java。用Java实现的gzip

  1. GetMethod  method  =  new  GetMethod(url);//生成一个get方法实例  
  2.   
  3. method.setQueryString(queryString);//设置查询字符串  
  4. method.addRequestHeader("Accept-Encoding", "gzip");//设置接受响应消息为gzip  
  5.   
  6. HttpClient client  =  new  HttpClient();//生成执行get方法的客户端实例  
  7. client.executeMethod(method);//执行get方法  
  8.   
  9. InputStream in  =  method .getResponseBodyAsStream();//获取响应消息体  
  10. Header contentEncoding  =  method .getResponseHeader("Content-Encoding");//获取消息头Content-Encoding判断数据流是否gzip压缩过  
  11.   
  12. if (contentEncoding != null && contentEncoding.getValue().equalsIgnoreCase("gzip")) {  
  13.     GZIPInputStream gzipIn  =  new  GZIPInputStream(in);  
  14.     int len  =  Integer .parseInt(method.getResponseHeader("Content-Length").getValue());  
  15.     byte[] b  =  new  byte[len];  
  16.     gzipIn.read(b);  
  17.       
  18.     String json  =  new  String(b);  
  19.     System.out.println(json);  
  20. }  

 

    In addtional, give a example about Server compress the data using gzip。使用gzip在服务器端压缩数据的例子。

  1. byte[]  result  =  data .getBytes("UTF-8");  
  2.   
  3. if(response.getHeader("Accept-Encoding").equalsIgnoreCase("gzip"))  
  4. {  
  5.     // System.out.println("Before compression, the data size is :"+ result.length);  
  6.     // Using gzip compress the data  
  7.     ByteArrayOutputStream out  =  new  ByteArrayOutputStream();  
  8.     GZIPOutputStream gout  =  new  GZIPOutputStream(out);  
  9.     gout.write(json.getBytes("UTF-8"));  
  10.     gout.close();  
  11.     result  =  out .toByteArray();  
  12.   
  13.     // System.out.println("After compression, the data size is "+gzipResult.length);  
  14.     this.getResp().setHeader("Content-Encoding","gzip");  
  15.     this.getResp().setHeader("Content-Length", result.length+"");  
  16. }  
  17.   
  18. response.getOutputStream().write(result); 
分享到:
评论

相关推荐

    Java数据压缩与传输实例

    在Java编程环境中,数据压缩与传输是常见的任务,特别是在处理大量数据或进行网络通信时。本文将深入探讨Java中如何实现这两个关键功能,并提供相关的源码示例。 首先,我们来了解一下Java中的数据压缩。Java标准库...

    java实现gzip ajax请求gzip压缩

    在IT行业中,gzip是一种广泛使用的数据压缩算法,尤其在Web服务中,用于减少网络传输的数据量,从而提高页面加载速度和降低服务器带宽消耗。Java作为后端开发的重要语言,支持处理gzip压缩,而Ajax(Asynchronous ...

    Java数据压缩与传输实例.rar

    在Java编程语言中,数据压缩和传输是两个关键的领域,尤其在大数据处理、网络通信以及文件存储等场景中显得尤为重要。本实例将探讨如何利用Java实现数据的压缩和传输,帮助开发者提升程序效率和资源利用率。 首先,...

    Java数据压缩与传输实例.zip

    总的来说,Java数据压缩与传输实例涉及到的核心技术有:Java.util.zip库的使用、文件I/O操作、网络编程(Socket)以及基本的文件操作。通过这些技术,开发者能够有效地压缩数据,减少传输时间和带宽消耗,同时确保...

    Java gzip压缩源码 web程序必备

    Java Gzip压缩是Web应用程序中常见的一种数据压缩技术,它基于GNU zip算法,可以有效减少网络传输的数据量,提高网页加载速度,节省带宽资源。本文将深入探讨Java中的Gzip压缩源码及其在Web程序中的应用。 首先,...

    java源码:Java数据压缩与传输实例.zip

    在Java编程语言中,数据压缩和传输是两个关键的领域,尤其在大数据处理、网络通信以及文件存储中扮演着重要角色。本实例聚焦于如何利用Java实现数据的压缩和解压,以及如何进行数据传输。这里我们将深入探讨相关知识...

    Ajax中使用JSON传输数据

    在Web开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛用于实现页面的无刷新更新,提高用户体验。...在实际开发中,还需要注意安全问题,如避免XSS和CSRF攻击,以及优化网络传输性能,如使用GZIP压缩等。

    java源码包---java 源码 大量 实例

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java代码解压与压缩代码

    GZIP压缩常用于Web服务器上,以减少传输数据量,加快网页加载速度;在大数据处理中,为了节省存储空间和提高数据传输效率,也常常采用GZIP压缩文件。 #### Java代码实现 在给定的代码片段中,定义了一个名为`...

    java源码包3

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java源码包2

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、...

    java源码包4

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Android GZip的使用-开发中网络请求的压缩实例详解

    通过这种方式,Android客户端能够有效地处理GZIP压缩的HTTP响应,减少网络传输的数据量,从而提升应用的性能和用户体验。同时,了解GZIP的文件格式标准,如在RFC文档中的详细定义...

    Tomcat多端口域名访问并配置开启gzip压缩方法

    Gzip是一种广泛使用的数据压缩算法,它可以在HTTP传输过程中压缩数据,从而减少传输数据的大小,加快页面加载速度,节省带宽资源。在Tomcat中开启gzip压缩,需要添加或修改Connector标签的compression属性以及相关的...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、...

    解压gz文件的jar包及java代码

    解压.gz文件的Java代码在很多场景下都很有用,比如在服务器端接收压缩的数据,或者在本地处理从网络下载的.gz文件。它可以帮助我们更高效地处理大文件,减少网络传输时间和内存占用。 5. **扩展** 如果需要解压...

    一个采用HTTP实现的 ZIP content 内容的delivery传送例子程序

    6. **性能优化**:对于大型ZIP文件,服务器可能需要使用分块传输编码或GZIP压缩来提高传输效率。分块传输编码允许服务器逐步发送文件,而GZIP压缩则可以减小文件在网络上传输的大小。 7. **错误处理**:服务器和...

    JavaXML和JSON处理.pdf

    同时,也可以利用压缩技术(如GZIP)减少数据在网络中的传输成本。无论选择哪种格式,理解它们的优缺点以及如何在Java中有效地处理它们是提升应用性能的关键。 总之,Java XML和JSON处理是Java EE应用开发中的重要...

    compress压缩网站

    这个字段用于指示服务器使用的编码类型,如gzip或deflate,以告知浏览器数据是如何被压缩的。当服务器向客户端发送压缩后的HTML内容时,会设置这个头部信息,以便浏览器能够正确地解压并渲染页面。 在Java Web应用...

Global site tag (gtag.js) - Google Analytics