当前位置: 代码迷 >> Java Web开发 >> servlet过滤中文字符
  详细解决方案

servlet过滤中文字符

热度:303   发布时间:2008-03-09 16:43:32.0
servlet过滤中文字符
每个大型的j2ee都要用到过滤中文字符的过滤器



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



public class SetCharacterEncodingFilter 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);

    }


}


第二步:修改web.xml文件 只需添加

<filter>
      <filter-name>Set Character Encoding</filter-name>
      <filter-class>filter.SetCharacterEncodingFilter</filter-class>
      <init-param>
      <param-name>encoding</param-name>
         <param-value>UTF-8</param-value>
      </init-param>
   </filter>
   <filter-mapping>
      <filter-name>Set Character Encoding</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

即可

其中<url-pattern>/*</url-pattern>
表示对所有请求都要过滤,如果改成

<url-pattern>/*.do</url-pattern>表示只对.do结尾的请求过滤

如果改成

<url-pattern>/a.jsp</url-pattern> 表示只对a.jsp这个页面过滤

具体问题再 具体分析



zonecens     www.okjava.net.cn
搜索更多相关主题的帖子: servlet  中文字符  import  过滤器  javax  

----------------解决方案--------------------------------------------------------
  相关解决方案