gzip就是GNU ZIP了,很多浏览器都支持这种压缩格式的content,需要加上response.addHeader("Content-Encoding", "gzip");不过避免某些不支持的浏览器出现错误,需要检查request.getHeaders("Accept-Encoding");里面是否包含了gizp.
压缩处理的工序是在过滤链里面处理的,在自己的应用的web.xml里面描述:
GzipFilter
compressionFilters.CompressionFilter
GzipFilter
*
这里CompressionFilter是Filter接口的类,在实现doFilter方法的时候:
wrappedResponse = new CompressionServletResponseWrapper((HttpServletResponse)response);
chain.doFilter(request, wrappedResponse);
实际上是用CompressionServletResponseWrapper来处理服务器端的response,我们都知道jsp显示的内容是 response里面的out输出的流产生出来的,那么用CompressionServletResponseWrapper将out的流采用gzip压缩下就可以完成任务了:CompressionResponseStream stream = new CompressionResponseStream(response);
在CompressionResponseStream里面将outputstream封装了一下
GZIPOutputStream gzipstream = new GZIPOutputStream(output);
response.addHeader("Content-Encoding", "gzip");
具体代码应该在网上也能找到了.