博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何配置Filter过滤器处理JSP中文乱码(转)
阅读量:4993 次
发布时间:2019-06-12

本文共 3403 字,大约阅读时间需要 11 分钟。

简单配置步骤:

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>

EncodingFilter
com.filters.SetCharacterEncodingFilter
encoding
GBK
ignore
true
EncodingFilter
/*

2.实现过滤器代码,创建一个SetCharacterEncodingFilter

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" 

4.设置前台页面字符编码集

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

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

转载于:https://www.cnblogs.com/zhuxiaolin/p/5017934.html

你可能感兴趣的文章
bzoj 1925: [Sdoi2010]地精部落
查看>>
模仿支付宝banner平铺浏览器设计效果(自由创建按钮序列)
查看>>
spring 和spring cloud 组成
查看>>
第二冲刺站立会议01
查看>>
C++ const
查看>>
Windows Tips
查看>>
Spring中使用RedisTemplate操作Redis(spring-data-redis)
查看>>
Opencv - Android 配置安装
查看>>
IOS中的block和retain cycle (经典)
查看>>
在Mvc中 使用 Ajax 提交和接收 数据
查看>>
防抖(Debouncing)和节流(Throttling)
查看>>
SQL Server 查询当前行、上一行、下一行合并查询
查看>>
Python 学习笔记之——用 sklearn 对数据进行预处理
查看>>
0 window DOS窗口常用指令
查看>>
c++11特性与cocos2d-x 3.0之std::bind与std::function
查看>>
ARC078 D.Fennec VS. Snuke(树上博弈)
查看>>
VIM学习笔记一
查看>>
面向对象第四单元总结
查看>>
同源策略,Jsonp实现跨域
查看>>
二叉搜索树的后序遍历序列
查看>>