如何配置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

<!--中文乱码处理过滤-->

  1. <filter>

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

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

[java] view plaincopy

  1. package com.filters;

  2. import java.io.IOException;

  3. import javax.servlet.Filter;

  4. import javax.servlet.FilterChain;  
  5. import javax.servlet.FilterConfig;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.ServletRequest;  
  8. import javax.servlet.ServletResponse;  
  9. /**

  10. * 自定义字符处理过滤器
  11. * 参考自Tomcat目录webapps\examples\WEB-INF\classes\filters
  12. * @author coderlu
  13. * @since 2012-12-10
  14. */
  15. public class SetCharacterEncodingFilter implements Filter {  
  16. protected FilterConfig filterConfig = null; //初始化配置

  17. protected String encoding = null;           //接收字符编码
  18. protected boolean ignore = true;            //是否忽略大小写
  19. /* 析构函数

  20. * @see javax.servlet.Filter#destroy()
  21. */
  22. @Override
  23. public void destroy() {  
  24. this.encoding = null;  
  25. this.filterConfig = null;  
  26. }  
  27. /* 执行过滤操作

  28. * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
  29. */
  30. @Override
  31. public void doFilter(ServletRequest request, ServletResponse response,  
  32. FilterChain chain) throws IOException, ServletException {  
  33. if (ignore || (request.getCharacterEncoding() == null)) {

  34. String encoding = selectEncoding(request);  //如果为空先从web.xml中得到
  35. if (encoding != null){  
  36. request.setCharacterEncoding(encoding); //设置字符集编码
  37. }  
  38. }  
  39. chain.doFilter(request, response);  
  40. }  
  41. /* 初始化过滤器

  42. * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
  43. */
  44. @Override
  45. public void init(FilterConfig filterConfig) throws ServletException {  
  46. this.filterConfig = filterConfig;     
  47. this.encoding = filterConfig.getInitParameter("encoding");  //从web.xml文件中读取encoding的值
  48. String value = filterConfig.getInitParameter("ignore");     //从web.xml文件中读取ignore的值
  49. //以下三种情况均为忽略大小写
  50. if (value == null)  
  51. this.ignore = true;  
  52. else if (value.equalsIgnoreCase("true"))  
  53. this.ignore = true;  
  54. else if (value.equalsIgnoreCase("yes"))  
  55. this.ignore = true;  
  56. else
  57. this.ignore = false;  
  58. }  
  59. /**

  60. * 得到字符编码
  61. * @param request
  62. * @return
  63. */
  64. protected String selectEncoding(ServletRequest request) {  
  65. return (this.encoding);  
  66. }  
  67. }

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

[html] view plaincopy

  1. <!--URIEncoding 配置服务器反应编码集-->

  2. <Connector port="8080" protocol="HTTP/1.1"
  3. connectionTimeout="20000"
  4. redirectPort="8443"
  5. URIEncoding="GBK"/>

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

[html] view plaincopy

  1. <%@ 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中文乱码

时间: 2024-07-30 20:27:45

如何配置Filter过滤器处理JSP中文乱码的相关文章

SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】

配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-c

JSP用过滤器解决request中文乱码问题

(1)客户端的数据一般是通过HTTP  GET/POST方式提交给服务器,在服务器端用request.getParameter() 读取参数时,很容易出现中文乱码现象. (2)用过滤器解决request中文乱码问题. (3)代码如下: package my; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ChineseFilter implements Filter { //

解决JSP中文乱码问题

大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考.首先了解一下Java中文问题的由来: Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦.原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题.首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流

JSP学习笔记(三):解决JSP中文乱码问题

JSP开发应用过程中中文乱码是个比较常见的问题,其根源是:Web容器默认的字符编码格式是ISO-8859-1. 一.ISO-8859-1是不支持中文的.假如在保存JSP页面源码时遇到该错误,只要把JSP命令标签中的键值对"pageEncoding"的值ISO-8859-1改成"utf-8"(或UTF-8),当然是建议改成这样的编码格式,也可以改成GBK.这样就可以顺利保存源代码了. 二.get和post提交表单时遇到中文乱码问题的解决方案: (1)post提交:po

JSP中文乱码问题终极解决方案(下)

摘要: 本文首先从四个方面给出了在使用JSP过程中可能出现中文乱码的情形,具体包括JSP页面中文乱码.JSP源文件中文乱码.GET 请求的请求参数为中文乱码 和 POST 请求的请求参数为中文乱码四种情形,并针对每种情形给出了相应的终极解决方案. 一. JSP页面与JSP源文件乱码 在介绍JSP页面与JSP源文件的乱码问题前,首先我们必须对JSP页面中文乱码问题与JSP源文件中文乱码问题有一个清晰的概念,即: JSP页面中文乱码问题是指用户在浏览器看到的服务器所返回的jsp页面中,中文字符不能正

JSP中文乱码问题终极解决方案

在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码.参数乱码.表单乱码.源文件乱码.下面来逐一解决其中的乱码问题. 一.JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码. 先看一个JSP程序: [java] view plaincopyprint? <%@ page language="java" import="java.util.

jsp中文乱码解决办法

一.JSP页面显示乱码 二.表单提交中文时出现乱码 三.数据库连接 大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到 的中文乱码的问题及解决办法写出来供大家参考. 一.JSP页面显示乱码下面的显示页面(display.jsp)就出现乱码: <html>< head>< title>JSP的中文处理</title> < meta http-equiv="Content-Type" con

【转】JSP中文乱码问题终极解决方案

文章转自:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码.参数乱码.表单乱码.源文件乱码.下面来逐一解决其中的乱码问题. 一.JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码. 先看一个JSP程序: <%@ page language=&qu

javaEE jsp 中文乱码问题

如果使用Tomcat服务器,在提交过程中,经常会出现中文乱码问题.乱码问题分为两个方面: 1.中文无法显示 有些JSP中,中文根本无法显示.通常的原因是没有把文件头的字符集设置为中文字符集.一定要保证文件头上写明: <%@ page language="java" contentType="text/html;charset=gb2312"%> 或者 <%@ page language="java" pageEncoding=&