Package com.liusoft.dlog4j.servlet

Source Code of com.liusoft.dlog4j.servlet.GZIPFilter

/*
* Copyright 2003 Jayson Falkner (jayson@jspinsider.com)
* This code is from "Servlets and JavaServer pages; the J2EE Web Tier",
* http://www.jspbook.com. You may freely use the code both commercially
* and non-commercially. If you like the code, please pick up a copy of
* the book and help support the authors, development of more free code,
* and the JSP/Servlet/J2EE community.
*/
package com.liusoft.dlog4j.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

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;

import com.liusoft.dlog4j.util.RequestUtils;

/**
* ����ѹ��������
* @author Winter Lau
*/
public class GZIPFilter implements Filter {

  private List ignore_pages = new ArrayList();
 
  public void init(FilterConfig filterConfig) {
    Enumeration pnames = filterConfig.getInitParameterNames();
    while(pnames.hasMoreElements()){
      String param = (String)pnames.nextElement();
      if(param.startsWith("ignore")){
        ignore_pages.add(filterConfig.getInitParameter(param));
      }
    }
  }

  public void doFilter(ServletRequest req, ServletResponse res,
      FilterChain chain) throws IOException, ServletException {
    if (req instanceof HttpServletRequest) {     
      HttpServletRequest request = (HttpServletRequest) req;
      HttpServletResponse response = (HttpServletResponse) res;
      try{
        String uri = request.getRequestURI().substring(request.getContextPath().length());
        boolean ignore = ignore_pages.contains(uri);
        /*
        if(ignore){
          System.out.println("Ignore " + uri);
        }*/
        if (!ignore && isGZIPSupported(request)) {
          GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(
              response);
          chain.doFilter(req, wrappedResponse);
          wrappedResponse.finishResponse();
          return;
        }
      }catch(Exception e){
        e.printStackTrace();
      }
    }
    chain.doFilter(req, res);
  }
 
  /**
   * �ж�������Ƿ�֧��GZIPѹ��
   * @param req
   * @return
   */
  private boolean isGZIPSupported(HttpServletRequest req) {
        String browserEncodings = RequestUtils.getHeader(req, "accept-encoding");
        return
            ((browserEncodings != null) &&
            (browserEncodings.indexOf("gzip") != -1));
    }
 
  public void destroy() {
    if(ignore_pages!=null){
      ignore_pages.clear();
      ignore_pages = null;
    }
  }
}
TOP

Related Classes of com.liusoft.dlog4j.servlet.GZIPFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.