gzip就是GNU ZIP了,很多瀏覽器都支持這種壓縮格式的content,需要加上response.addHeader("Content-Encoding", "gzip");不過避免某些不支持的瀏覽器出現(xiàn)錯誤,需要檢查request.getHeaders("Accept-Encoding");里面是否包含了gizp.
壓縮處理的工序是在過濾鏈里面處理的,在自己的應(yīng)用的web.xml里面描述:
GzipFilter
compressionFilters.CompressionFilter
GzipFilter
*
這里CompressionFilter是Filter接口的類,在實(shí)現(xiàn)doFilter方法的時候:
wrappedResponse = new CompressionServletResponseWrapper((HttpServletResponse)response);
chain.doFilter(request, wrappedResponse);
實(shí)際上是用CompressionServletResponseWrapper來處理服務(wù)器端的response,我們都知道jsp顯示的內(nèi)容是 response里面的out輸出的流產(chǎn)生出來的,那么用CompressionServletResponseWrapper將out的流采用gzip壓縮下就可以完成任務(wù)了:CompressionResponseStream stream = new CompressionResponseStream(response);
在CompressionResponseStream里面將outputstream封裝了一下
GZIPOutputStream gzipstream = new GZIPOutputStream(output);
response.addHeader("Content-Encoding", "gzip");
具體代碼應(yīng)該在網(wǎng)上也能找到了.