响应压缩的目的是压缩服务器向客户端发回的响应,这样就可以提高响应速度。但首先要确定用户浏览器支持响应压缩,即可以将服务器发来的压缩文件进行解压。
但是response的响应流—ServletOutputStream不是缓冲的,它不会等待过滤器处理,就会直接返回给用户。
所以要用装饰模式,将servletOutputStream包装成一个有缓冲的输出流。还要包装response得到getOutputStream方法和getWriter方法,都能返回相应缓冲功能的流。而且要流一个最终可访问的流。来刷新响应给用户。
GZIPServletOutputStream.java
CompressionResponseWrapper.java
CompressionFilter.java