filter实现设置字符编码格式

  • 实现一个filter

    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

    <?xml version="1.0" encoding="UTF-8"?>  
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"  
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
      
     <!-- 过滤器配置信息 -->  
     <filter>  
      <filter-name>SetCharacterEncodingFilter</filter-name>  
      <!-- 过滤器设置编码文件 -->  
      <filter-class>  
       ssh.dlc.chp1.filter.SetCharacterEncodingFilter  
      </filter-class>  
      <init-param>  
          <!--  
           init-param元素定义了过滤器的初始化参数 
           -->  
       <description>给参数和值设置名称和编码类型</description>  
       <param-name>encode</param-name>  
       <param-value>GBK</param-value>  
      </init-param>  
     </filter>  
     <filter-mapping>  
      <!--   
       filter-mapping告诉容器所有与模式向匹配的请求都应该允许通过访问控制过滤器。  
       所有以.do结尾的访问都先通过过滤器文件过滤   
      -->  
      <filter-name>SetCharacterEncodingFilter</filter-name>  
      <url-pattern>*.do</url-pattern>  
     </filter-mapping>  
    </web-app>  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值