编写过滤器解决中文乱码

  1. import java.io.IOException;  
  2. import javax.servlet.Filter;  
  3. import javax.servlet.FilterChain;  
  4. import javax.servlet.FilterConfig;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.ServletRequest;  
  7. import javax.servlet.ServletResponse;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class SetCharacterEncodingFilter implements Filter { //要实现Filter接口  
  12.  //存储编码格式信息  
  13.  private String encode = null;  
  14.  public void destroy(){  
  15.     
  16.  }  
  17.    
  18.  public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)  
  19.    throws IOException,ServletException{  
  20.     
  21.   //转换  
  22.   HttpServletRequest request = (HttpServletRequest)req;  
  23.   HttpServletResponse response = (HttpServletResponse)resp;  
  24.     
  25.   /* 
  26.    * 判断在web.xml文件中是否配置了编码格式的信息 
  27.    * 如果为空,则设置编码格式为配置文件中的编码格式 
  28.    * 否则编码格式设置为GBK 
  29.    */  
  30.   if(this.encode != null && !this.encode.equals("")){  
  31.    request.setCharacterEncoding(this.encode);  
  32.    response.setCharacterEncoding(this.encode);  
  33.   }else{  
  34.    request.setCharacterEncoding("GBK");  
  35.    response.setCharacterEncoding("GBK");  
  36.   }  
  37.     
  38.   /* 
  39.    * 使用doFilter方法调用链中的下一个过滤器或目标资源(servlet或JSP页面)。 
  40.    * chain.doFilter处理过滤器的其余部分(如果有的话),最终处理请求的servlet或JSP页面。 
  41.    */  
  42.   chain.doFilter(request, response);  
  43.  }  
  44.    
  45.  public void init(FilterConfig config) throws ServletException{  
  46.   //获取在web.xml文件中配置了的编码格式的信息  
  47.   this.encode = config.getInitParameter("encode");  
  48.  }  
  49.    
  50.    
  51. }  
  52. 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.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class SetCharacterEncodingFilter implements Filter { //要实现Filter接口
     //存储编码格式信息
     private String encode = null;
     public void destroy(){
      
     }
     
     public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain)
       throws IOException,ServletException{
      
      //转换
      HttpServletRequest request = (HttpServletRequest)req;
      HttpServletResponse response = (HttpServletResponse)resp;
      
      /*
       * 判断在web.xml文件中是否配置了编码格式的信息
       * 如果为空,则设置编码格式为配置文件中的编码格式
       * 否则编码格式设置为GBK
       */
      if(this.encode != null && !this.encode.equals("")){
       request.setCharacterEncoding(this.encode);
       response.setCharacterEncoding(this.encode);
      }else{
       request.setCharacterEncoding("GBK");
       response.setCharacterEncoding("GBK");
      }
      
      /*
       * 使用doFilter方法调用链中的下一个过滤器或目标资源(servlet或JSP页面)。
       * chain.doFilter处理过滤器的其余部分(如果有的话),最终处理请求的servlet或JSP页面。
       */
      chain.doFilter(request, response);
     }
     
     public void init(FilterConfig config) throws ServletException{
      //获取在web.xml文件中配置了的编码格式的信息
      this.encode = config.getInitParameter("encode");
     }
     
     
    }


 

在web.xml文件中的配置信息如下:

[html] view plain copy
print ?
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
  3.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"  
  4.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  5.   
  6.    
  7.  <filter>  
  8.   <filter-name>SetCharacterEncodingFilterfilter-name>  
  9.     
  10.   <filter-class>  
  11.    ssh.dlc.chp1.filter.SetCharacterEncodingFilter  
  12.   filter-class>  
  13.   <init-param>  
  14.         
  15.    <description>给参数和值设置名称和编码类型description>  
  16.    <param-name>encodeparam-name>  
  17.    <param-value>GBKparam-value>  
  18.   init-param>  
  19.  filter>  
  20.  <filter-mapping>  
  21.   

你可能感兴趣的:(编写过滤器解决中文乱码)