过滤器解决struts乱码

来源:互联网 发布:淘宝账号解绑手机号 编辑:程序博客网 时间:2024/05/20 21:19

//过滤器类配制如下

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class CharacterEncodingFilter extends HttpServlet implements Filter {   //解决struts中文编码的过滤器
    private FilterConfig filterConfig;
    protected String encoding;    //编码
    protected boolean enable;     //是否起用此编码
    //Handle the passed-in FilterConfig
    //默认编码方式
    public CharacterEncodingFilter() {
        this.encoding = "UTF-8";
        this.enable = false;
    }
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        loadConfigParams();
    }

    public void loadConfigParams() {    //取得初始化参数
        this.encoding = this.filterConfig.getInitParameter("encoding");
        String enableStr = this.filterConfig.getInitParameter("enable");
        if(enableStr.equals("true")) {
            this.enable = true;
        }
        else {
            this.enable = false;
        }
    }
    //Process the request/response pair
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain filterChain) {
        try {
            if(enable) {                  //判断是否起用编码参数

                request.setCharacterEncoding(encoding);

            }
            filterChain.doFilter(request, response);

            //response.setCharacterEncoding(encoding);
        } catch (ServletException sx) {
            //filterConfig.getServletContext().log(sx.getMessage());
        } catch (IOException iox) {
            //filterConfig.getServletContext().log(iox.getMessage());
        }
    }

    //Clean up resources
    public void destroy() {
    }
}


//在web.xml中添加

 <filter>
    <filter-name>characterencodingfilter</filter-name>
    <filter-class>member.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>GB2312</param-value>
    </init-param>
    <init-param>
      <param-name>enable</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterencodingfilter</filter-name>
    <servlet-name>action</servlet-name>
  </filter-mapping>

 

原创粉丝点击