当前位置: 代码迷 >> Web前端 >> struts 1.x 过滤器 解决中文乱码有关问题(转)
  详细解决方案

struts 1.x 过滤器 解决中文乱码有关问题(转)

热度:173   发布时间:2012-08-22 09:50:35.0
struts 1.x 过滤器 解决中文乱码问题(转)
1. 编写处理字符编码的Filter类:

 
 package yours.package;

   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 CharacterEncodingFilter implements Filter {
      protected String encoding = null;
      protected FilterConfig filterConfig = null;
      protected boolean ignore = true;

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

     public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain)throws IOException, ServletException {
            if (ignore || (request.getCharacterEncoding() == null)) {
                String encoding = selectEncoding(request);
                if (encoding != null)
                request.setCharacterEncoding(encoding);
            }
            chain.doFilter(request, response); 
      }

      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;
      }

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


2.修改WEB-INF/web.xml文件

   <filter>
        <filter-name>CharacterEncoding</filter-name>
        <filter-class>yours.package.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>
        </init-param>
        <init-param>
            <param-name>ignore</param-name>
            <param-value>true</param-value>
        </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncoding</filter-name>
    <servlet-name>action</servlet-name>
  </filter-mapping>

  相关解决方案