900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 如何配置Filter过滤器处理JSP中文乱码

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

时间:2022-07-20 22:52:33

相关推荐

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

原文链接:/lutinghuan/article/details/8277422

简单配置步骤:

在项目web.xml文件添加过滤器标记和;实现过滤器代码;对Tomcat服务器conf目录里的Server.xml文件配置URIEncoding;前台页面设置contentType的charset值与web.xml里设置的值一致。

详细配置步骤:

1.配置web.xm文件,在web-app标签内添加过滤器的配置和

<!--中文乱码处理过滤--> <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类

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 -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”

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

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

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

备注:此处的charset的值要和web.xml里的 值一样

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。