关闭

如何配置Filter过滤器处理JSP中文乱码<参考>

标签: filter
196人阅读 评论(0) 收藏 举报
分类:
参考Tomcat服务器目录webapps的examples示例


简单配置步骤:
1.在项目web.xml文件添加过滤器标记<filter>和<filter-mapping>;
2.实现过滤器代码;
3.对Tomcat服务器conf目录里的Server.xml文件配置URIEncoding;
4.前台页面设置contentType的charset值与web.xml里设置的值一致。


详细配置步骤:
1.配置web.xm文件,在web-app标签内添加过滤器的配置<filter>和<filter-mapping>
[html] view plaincopy

      <!--中文乱码处理过滤-->    
        <filter>  
            <filter-name>EncodingFilter</filter-name><!--过滤器名称,自己起 -->  
            <filter-class>com.filters.SetCharacterEncodingFilter</filter-class><!--过滤器类名称,包括包名一致、写全 -->  
            <init-param><!--初始化参数,要指定的字符集编码 -->  
                <param-name>encoding</param-name><!--参数名称 -->  
                <param-value>GBK</param-value><!--参数值 -->  
            </init-param>  
            <init-param><!--初始化参数,指定是否忽略大小写 -->  
                <param-name>ignore</param-name>  
                <param-value>true</param-value>  
            </init-param>  
        </filter>  
        <filter-mapping>  
            <filter-name>EncodingFilter</filter-name>  
            <url-pattern>/*</url-pattern> <!--“/*”表示项目下所有资源 -->  
        </filter-mapping>  
      <!--中文乱码处理过滤 -->    


2.实现过滤器代码,创建一个SetCharacterEncodingFilter类
[java] view plaincopy

    package com.filters;  
      
    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;  
      
    /**
     * 自定义字符处理过滤器
     * 参考自Tomcat目录webapps\examples\WEB-INF\classes\filters
     * @author coderlu
     * @since 2012-12-10
     */  
    public class SetCharacterEncodingFilter implements Filter {  
      
        protected FilterConfig filterConfig = null; //初始化配置  
        protected String encoding = null;           //接收字符编码  
        protected boolean ignore = true;            //是否忽略大小写  
          
        /* 析构函数
         * @see javax.servlet.Filter#destroy()
         */  
        @Override  
        public void destroy() {  
            this.encoding = null;  
            this.filterConfig = null;  
        }  
      
        /* 执行过滤操作
         * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
         */  
        @Override  
        public void doFilter(ServletRequest request, ServletResponse response,  
                FilterChain chain) throws IOException, ServletException {  
              
            if (ignore || (request.getCharacterEncoding() == null)) {  
                String encoding = selectEncoding(request);  //如果为空先从web.xml中得到  
                if (encoding != null){  
                    request.setCharacterEncoding(encoding); //设置字符集编码  
                }  
            }  
            chain.doFilter(request, response);  
        }  
      
        /* 初始化过滤器
         * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
         */  
        @Override  
        public void init(FilterConfig filterConfig) throws ServletException {  
            this.filterConfig = filterConfig;     
            this.encoding = filterConfig.getInitParameter("encoding");  //从web.xml文件中读取encoding的值  
            String value = filterConfig.getInitParameter("ignore");     //从web.xml文件中读取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;  
        }  
          
        /**
         * 得到字符编码
         * @param request
         * @return
         */  
        protected String selectEncoding(ServletRequest request) {  
            return (this.encoding);  
        }  
    }  


3.修改Tomcat服务器conf\Server.xml文件,加入一个URIEncoding="GBK"
[html] view plaincopy

        <!--URIEncoding 配置服务器反应编码集-->  
        <Connector port="8080" protocol="HTTP/1.1"   
                   connectionTimeout="20000"   
                   redirectPort="8443"   
                   URIEncoding="GBK"/>  


4.设置前台页面字符编码集
[html] view plaincopy

    <%@ page contentType="text/html;charset=GBK" %>  

//此处的charset的值要和web.xml里的   <param-value></param-value>值一样

=================================完=====================================
参考自:
Tomcat服务器目录webapps的examples示例
jsp中文乱码的Filter过滤器配置:http://www.cnblogs.com/zhuboxingzbx/articles/1208118.html
JSP中文乱码,用过滤器方式解决:http://www.zhouwenze.com/archives/20110729-411.html
JSP中文乱码过滤器实例:http://blog.csdn.net/wkupaochuan/article/details/7461208
========================================================================
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Jersey学习记录(三)--过滤拦截器与异常处理

本文记录全局异常返回,过滤器,拦截器.一.全局异常处理器webservice定义全局返回错误码是很重要的一个功能,jersey正好就能实现这一功能.整个流程就是当jersey托管的类发现了异常,抛出给...
  • u012706811
  • u012706811
  • 2016-07-28 12:20
  • 8822

Spring MVC 自带的字符编码过滤器以及Tomcat字符编码设置,彻底解决中文参数乱码问题

java Web项目添加Spring支持后,可使用Spring自带的字符编码过滤器。源码在spring-web-4.1.0.RELEASE.jar包下的org.springframework.web....
  • BeauXie
  • BeauXie
  • 2016-11-29 10:41
  • 4761

中文乱码解决汇总(过滤器只对post请求有效)

一、避免乱码的一些注意点: 1.尽量使用统一的编码,如果你是重头开发一个系统,特别是Java开发的,推荐从页面到数据库再到配置文件都使用UTF-8进行编码,安全第一。 2.SetCharacter...
  • chx10051413
  • chx10051413
  • 2013-11-23 17:11
  • 1548

如何配置Filter过滤器处理JSP中文乱码

  • 2013-10-30 09:07
  • 19KB
  • 下载

如何配置Filter过滤器处理JSP中文乱码

参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记和; 2.实现过滤器代码; 3.对Tomcat服务器conf目...
  • lutinghuan
  • lutinghuan
  • 2012-12-10 13:56
  • 11228

如何配置Filter过滤器处理JSP中文乱码

参考Tomcat服务器目录webapps的examples示例 简单配置步骤: 1.在项目web.xml文件添加过滤器标记和; 2.实现过滤器代码; 3.对Tomcat服务器con...
  • hanxu521111
  • hanxu521111
  • 2014-06-20 14:16
  • 355

使用filter(过滤器)处理JSP和servlet的中文乱码

我的前一篇文章JSP和servlet中出现中文乱码的快速解决方法介绍了针对各种乱码问题的解决方法,但是这种方法需要在每一个出现乱码的页面添加那些处理乱码的语句,如果你的项目的页面非常多,上述做法显然很...
  • shinan_77
  • shinan_77
  • 2012-06-08 20:57
  • 519

java web中配置Filter解决jsp中文乱码问题

具体的做法:    建立一个实现 Filter 接口的类。这个类需要三个方法,分别是: doFilter 、 init 和 destroy 。 doFilter 方法包含主要的过滤代码, init 方...
  • yinxianluo
  • yinxianluo
  • 2014-11-22 21:00
  • 1113

关于myeclipse中web project中文乱码的解决(过滤器Filter)

  • 2011-04-08 10:57
  • 19KB
  • 下载

过滤器filter处理中文乱码

我部署了一个Java web应用,项目全部采用utf-8编码,在web.xml中配置了两个页面需要经过过滤器的登录和权限判定处理,其他页面不做处理,如下:       filterPages ...
  • qq_38176719
  • qq_38176719
  • 2017-06-20 19:34
  • 111
    个人资料
    • 访问:72603次
    • 积分:1022
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:99篇
    • 译文:0篇
    • 评论:9条
    最新评论