/*
* Created on 30.3.2004
*/
package com.idega.servlet.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* USAGE:
* Add the following to your web.xml (under /WEB-INF):
*
* <filter>
* <filter-name>Compress</filter-name>
* <filter-class>com.idega.servlet.filter.GZIPFilter</filter-class>
* </filter>
*
* And then you have to specify what to compress:
*
* <filter-mapping>
* <filter-name>Compress</filter-name>
* <url-pattern>*.jsp</url-pattern>
* </filter-mapping>
*
* <filter-mapping>
* <filter-name>Compress</filter-name>
* <url-pattern>*.html</url-pattern>
* </filter-mapping>
*
* <filter-mapping>
* <filter-name>Compress</filter-name>
* <url-pattern>/servlet/*</url-pattern>
* </filter-mapping>
*
* @author laddi
*/
public class GZIPFilter implements Filter {
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig arg0) throws ServletException {
System.out.println("[idegaWebApp] : Starting GZIPFilter");
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest,
* javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
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 (ae != null && ae.indexOf("gzip") != -1) {
//System.out.println("GZIP supported, compressing.");
GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(response);
chain.doFilter(req, wrappedResponse);
wrappedResponse.finishResponse();
return;
}
chain.doFilter(req, res);
}
}
/*
* (non-Javadoc)
*
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
}
}