統一字符集過濾器較標準寫法

linweihan1984發表於2007-10-24
java 程式碼
  1. package org.langsin.computer.util;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import javax.servlet.Filter;   
  6. import javax.servlet.FilterChain;   
  7. import javax.servlet.FilterConfig;   
  8. import javax.servlet.ServletException;   
  9. import javax.servlet.ServletRequest;   
  10. import javax.servlet.ServletResponse;   
  11.   
  12. public class EncodingFilter implements Filter {   
  13.   
  14.    protected String encoding;   
  15.    protected boolean ignore;   
  16.    protected FilterConfig filterConfig;   
  17.  public void destroy() {   
  18.   // TODO Auto-generated method stub   
  19.   
  20.  }   
  21.   
  22.  public void doFilter(ServletRequest request, ServletResponse response,   
  23.    FilterChain chain) throws IOException, ServletException {   
  24.   if(ignore||request.getCharacterEncoding()==null){   
  25.    //如果ignore為真或者request.getCharacterEncoding()為null則執行   
  26.    String encoding=this.selectEncoding(request);   
  27.    if(encoding!=null){   
  28.     request.setCharacterEncoding(encoding);   
  29.    }   
  30.   }   
  31.   chain.doFilter(request, response);   
  32.     
  33.   
  34.  }   
  35.   
  36.  public void init(FilterConfig filterConfig) throws ServletException {   
  37.   this.filterConfig=filterConfig;   
  38.   this.encoding=filterConfig.getInitParameter("encoding");   
  39.   String value=filterConfig.getInitParameter("ignore");   
  40.   //用於配置檔案中過濾器忽視大小寫的操作   
  41.   if(value==null){   
  42.    this.ignore=true;   
  43.       
  44.   }else if(value.equalsIgnoreCase("true")){   
  45.    this.ignore=true;   
  46.   }else if(value.equalsIgnoreCase("yes")){   
  47.    this.ignore=true;   
  48.   }else{   
  49.    this.ignore=false;   
  50.   }   
  51.  }   
  52.  public String selectEncoding(ServletRequest request){   
  53.   return this.encoding;   
  54.  }   
  55.   
  56. }   
  57.   

 

然後在web.xml中進行配置

xml 程式碼
  1. <filter>  
  2.   <filter-name>encoding</filter-name>  
  3.   <filter-class>org.langsin.computer.util.EncodingFilter</filter-class>  
  4.   <init-param>  
  5.     <param-name>encoding</param-name>  
  6.     <param-value>UTF-8</param-value>  
  7.   </init-param>  
  8. </filter>  
  9. <filter-mapping>  
  10.   <filter-name>encoding</filter-name>  
  11.   <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  

相關文章