如何配置Filter过滤器处理JSP中文乱码
参考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
http://blog.csdn.net/lutinghuan/article/details/8277422
========================================================================
如何配置Filter过滤器处理JSP中文乱码的更多相关文章
- 使用Filter过滤器,解决中文乱码问题
首先是建立一个filter.java文件,注意implements的是Filter的servlet的那个包: public class filter11 implements Filter { @Ov ...
- SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】
配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter ...
- 关于web.xml中配置Spring字符编码过滤器以解决中文乱码的问题
当出现中文乱码问题,Spring中可以利用CharacterEncodingFilter过滤器解决,如下代码所示: <!-- Spring字符编码过滤器:解决中文乱码问题 --> < ...
- 解决jsp中文乱码问题
1. 先解决响应中的乱码 何为响应中的乱码?把页面中的"username"改成"用户名"你就知道了. 所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服 ...
- 【转】JSP中文乱码问题终极解决方案
原文地址:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的 ...
- jsp中文乱码解决办法
一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供 ...
- JSP中文乱码问题终极解决方案
在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码.参数乱码.表单乱码.源文件乱码.下面来逐一解决其中的乱码问题. 一.JSP页面中文乱码 ...
- Spring编码过滤器:解决中文乱码
Spring编码过滤器:解决中文乱码 针对问题: 前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题: 解决方案: web.x ...
- jsp中文乱码六种情况---解决方案
转 jsp中文乱码六种情况---解决方案 2016年10月22日 21:32:55 阅读数:10672 来源:http://blog.csdn.net/lovesummerforever/articl ...
随机推荐
- vue中如何不通过路由直接获取url中的参数
前言:为什么要不通过路由直接获取url中的参数? vue中使用路由的方式设置url参数,但是这种方式必须要在路径中附带参数,而且这个参数是需要在vue的路由中提前设置好的. 相对来说,在某些情况下直接 ...
- jsp 微信公众平台 token验证(php、jsp)(转载)
微信公众平台现在推出自动回复消息接口,但是由于是接口内容用的是PHP语言写的,很多地方操作起来让本人这个对java比较熟悉的小伙很别扭,所以仿照PHP的接口代码做了一套jsp语言编写的接口. 首先先把 ...
- PHP mcrypt加密扩展使用总结
在开发中,很多时候我们在前后端交互中需要对一些敏感数据进行一定的加密.PHP中有提供了mcrypt的这样一个加密扩展实现对数据的加密解密. 一.mcrypt扩展的安装 在低版本的PHP中需要在配置文件 ...
- JAVA 根据数据库表内容生产树结构JSON数据
1.利用场景 组织机构树,通常会有组织机构表,其中有code(代码),pcode(上级代码),name(组织名称)等字段 2.构造数据(以下数据并不是组织机构数据,而纯属本人胡编乱造的数据) List ...
- INADDR_ANY的确切含义
INADDR_ANY就是inet_addr("0.0.0.0") 首先,需要明确的是当服务器的监听地址是INADDR_ANY时设置的是服务器的IP地址. 其次,当服务器的监听地址是 ...
- 面试准备(二) 绘制 Activity 的生命流程图
我们来看一下这一张经典的生命周期流程图: 相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程. 1.启动Activity:系统会先调用onCr ...
- C#基础之lock
1.lock的本质 实现线程同步的第一种方式是我们经常使用的lock关键字,它将包围的语句块标记为临界区,这样一次只有一个线程进入临界区并执行代码.下面第一段的几行代码是关于lock关键字的使用方式, ...
- HoloLens开发手记 - Unity之场景共享 Shared holographic experiences in Unity
佩戴HoloLens的多个用户可以使用场景共享特性来获取集合视野,并可以与固定在空间中某个位置的同一全息对象进行交互操作.这一切是通过空间锚共享(Anchor Sharing)来实现的. 为了使用共享 ...
- 详解.NET IL代码
一.前言 IL是什么? Intermediate Language (IL)微软中间语言 C#代码编译过程? C#源代码通过LC转为IL代码,IL主要包含一些元数据和中间语言指令: JIT编译器把IL ...
- brew-cask 之本地更新 node
本文同步自我的个人博客:http://www.52cik.com/2015/11/04/brew-cask-local.html 今天 Node v4.2.2 (LTS) 发布,什么是 LTS 呢,百 ...