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");
具體代碼應該在網上也能找到了.