package com.FitBank.web.filtro; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; /** * Clase que implementa un filtro que comprime el ResponseStream de los Servlets * @author Fit-Bank */ public class FiltroGZIP implements Filter { /** * Metodo sobreescrito de la clase Filter que filtra un pedido * @param ped Pedido de servlet * @param res Respuesta de servlet * @param chain Cadena de filtros * @throws java.io.IOException Si no se puede escribir en el stream * @throws javax.servlet.ServletException Si hay un error en el servlet */ public void doFilter(ServletRequest ped, ServletResponse res, FilterChain chain) throws IOException, ServletException { if(ped instanceof HttpServletRequest) { HttpServletRequest pedido = (HttpServletRequest)ped; HttpServletResponse respuesta = (HttpServletResponse)res; String ae = pedido.getHeader("accept-encoding"); if((ae != null) && (ae.indexOf("gzip") != -1)) { EnvolturaRespuestaGZIP wrappedResponse = new EnvolturaRespuestaGZIP(respuesta); chain.doFilter(ped, wrappedResponse); wrappedResponse.finishResponse(); return; } chain.doFilter(ped, res); } } /** * Sobreescribe el metodo definido en la clase Filter * @param filterConfig No es usado ya que no hay configuración */ public void init(FilterConfig filterConfig) { // no hacer nada } /** * Sobreescribe el metodo definido en la clase Filter. Este filtro no se destruye. */ public void destroy() { // no hacer nada } }