Package cn.org.ape

Source Code of cn.org.ape.ApeFilter

package cn.org.ape;

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.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.org.ape.http.HttpRequest;
import cn.org.ape.http.HttpResponse;
import cn.org.ape.http.RequestContext;
import cn.org.ape.http.ResponseContext;

/**
* 主要是要是用于过滤编码 <br>
* 默认的编码是UTF-8<br>
* 同时也可以通过配置文件配置 如:<br>
<filter><br>
* <filter-name>filter</filter-name><br>
* <filter-class>cn.org.ape.ApeFilter</filter-class><br>
* <init-param><br>
* <param-name>encoding</param-name><br>
* <param-value>UTF-8</param-value><br>
* </init-param><br>
* <br><br>
* </filter><br>
* <br>
* <filter-mapping><br>
* <filter-name>filter</filter-name><br>
* <url-pattern>/*</url-pattern><br>
* </filter-mapping><br>
*
* @author 陈磊
*
*/
@WebFilter(urlPatterns="/servlet/*",
  initParams={@WebInitParam(name="encoding",value = "UTF-8")})
public class ApeFilter implements Filter {

  private static final Logger log = LoggerFactory.getLogger(ApeFilter.class);
  private static final String ENCODING = "encoding";
  private static String encoding; //字体编码 默认utf8
  @Override
  public void destroy() {
    // TODO Auto-generated method stub
   
  }

  /**
   * 该过滤器主要用于request的转码
   */
  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
      FilterChain chain) throws IOException, ServletException {
    HttpRequest request=new RequestContext((HttpServletRequest) servletRequest);
    HttpResponse response = new ResponseContext((HttpServletResponse) servletResponse);
    // 主要是修改post方式提交的数据
    request.setCharacterEncoding(encoding); //设设置编码
    //修改get方式提交的数据
    /**
     * get方式的修改只有将取得的数据强行转码
     * value = new String(value.getBytes("ISO-8859-1"), 
     *          "UTF-8");
     *但这里要知道原始的编码格式 如 tomcat 默认的"ISO-8859-1" 但也可以修改成UTF-8
     *所以这里不做Get方式的转码
     *
     */
    chain.doFilter(request, response);
   
  }

  /**
   * 初始化系统编码 :<p>
   * <p><param-name>encoding</param-name>
   <p><param-value>UTF-8</param-value>
     <p></init-param>
     * 系统默认的是UTF-8
   */
  @Override
  public void init(FilterConfig conf) throws ServletException {
    encoding=conf.getInitParameter(ENCODING);
    if (StringUtils.isEmpty(encoding))
    {
      encoding="UTF-8";//系统默认使用UTF-8
    }
    log.debug("系统采用{}编码过滤",encoding);
   
  }
 
 
 

 

}
TOP

Related Classes of cn.org.ape.ApeFilter

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.