编写过滤器解决中文乱码

  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文件中的配置信息如下:

  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>SetCharacterEncodingFilter</filter-name>  
  9.   <!-- 过滤器设置编码文件 -->  
  10.   <filter-class>  
  11.    ssh.dlc.chp1.filter.SetCharacterEncodingFilter  
  12.   </filter-class>  
  13.   <init-param>  
  14.       <!--  
  15.        init-param元素定义了过滤器的初始化参数 
  16.        -->  
  17.    <description>给参数和值设置名称和编码类型</description>  
  18.    <param-name>encode</param-name>  
  19.    <param-value>GBK</param-value>  
  20.   </init-param>  
  21.  </filter>  
  22.  <filter-mapping>  
  23.   <!--   
  24.    filter-mapping告诉容器所有与模式向匹配的请求都应该允许通过访问控制过滤器。  
  25.    所有以.do结尾的访问都先通过过滤器文件过滤   
  26.   -->  
  27.   <filter-name>SetCharacterEncodingFilter</filter-name>  
  28.   <url-pattern>*.do</url-pattern>  
  29.  </filter-mapping>  
  30. </web-app>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值