过滤器

来源:互联网 发布:粉笔直播课淘宝 编辑:程序博客网 时间:2024/05/19 00:37
<filter>
    
<filter-name>setCharacterEncodingFilter</filter-name>
    
<filter-class>tools.SetCharacterEncodingFilter</filter-class>
    
<init-param>
      
<param-name>encoding</param-name>
      
<param-value>UTF-8</param-value>
    
</init-param>
  
</filter>
  
<filter-mapping>
    
<filter-name>setCharacterEncodingFilter</filter-name>
    
<url-pattern>/*</url-pattern>
  
</filter-mapping>
 
package tools;

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;

public class SetCharacterEncodingFilter implements Filter {
    
    
protected String encoding = null;
    
    
protected FilterConfig filterConfig = null;
    
    
protected boolean ignore = true;

    
public void init(FilterConfig filterConfig) throws ServletException {
        
this.filterConfig = filterConfig;
        
this.encoding = filterConfig.getInitParameter("encoding");
        String value 
= filterConfig.getInitParameter("ignore");
        
        
if(value==null){
            
this.ignore = true;
        }

        
else if(value.equalsIgnoreCase("true")){
            
this.ignore = true;
        }

        
else if(value.equalsIgnoreCase("yes")){
            
this.ignore = true;
        }
else{
            
this.ignore = false;
        }


    }

    
//过滤的方法是在这里实现的
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) 
throws IOException, ServletException {
        
if(ignore || request.getCharacterEncoding()==null){//如果忽略编码格式或者制定编码格式为空则从request中获得编码格式
            encoding = selectEncoding(request);            
        }

        
if(encoding != null){
            request.setCharacterEncoding(
this.encoding);
        }

        chain.doFilter(request , response);
    }


    
private String selectEncoding(ServletRequest request) 
        
return this.encoding;
    }

    
    
public void destroy() {
        
this.encoding = null;
        
this.filterConfig = null;

    }


}

 

 

原创粉丝点击