package com.junmix.utilities.gzip; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** * GZIPFilter * * @author junmix * @version 1.0 */ public class GZIPFilter implements Filter { /** * main process
* * @param req * ServletRequest(javax.servlet.ServletRequest) * @param res * ServletResponse(javax.servlet.ServletResponse) * @return chain FilterChain(javax.servlet.Filter) * @throws Exception * IOException, ServletException */ public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { if (req instanceof HttpServletRequest) { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; String ae = request.getHeader("accept-encoding"); // if Browser accepts gzip compression, if (ae != null && ae.indexOf("gzip") != -1) { // make new instance for Filter GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(response); // execute chain.doFilter(req, wrappedResponse); // close writer, stream wrappedResponse.finishResponse(); return; } // if Browser NOT accepts gzip compression, chain.doFilter(req, res); } } // no init parameters public void init(FilterConfig filterConfig) { } public void destroy() { } }