字符编码过滤器是一种快速解决Tomcat服务器中request和response乱码问题的解决方案。一般程序中要解决request、resopnse传中文参数乱码问题时一般通过在取参数前对request进行setCharacterEncoding("UTF-8")编码设置,这种方法需要在每个要使用的页面中都进行编码设置,用起来十分麻烦。字符编码过滤器通过在每个页面访问前执行Filter进行自动编码设置,只需要编写一个Filter页面并将Filter在web.xml中配置到需要的页面(本文设置到全部页面)即可。

  首先创建CharacterEncodingFilter类,继承自javax.servlet.Filter。

package filter;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;public class CharacterEncodingFilter implements Filter {private String    characterEncoding;private boolean enabled;@Overridepublic void init(FilterConfig arg0) throws ServletException {  //web程序启动时初始化Filter,通过FilterConfig对象从web.xml文件获取初始化参数值characterEncoding=arg0.getInitParameter("characterEncoding");enabled="true".equalsIgnoreCase(arg0.getInitParameter("enabled".trim()));}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {//当初始化的参数为启用状态时,对request对象和response对象进行编码设置if(enabled||characterEncoding!=null){arg0.setCharacterEncoding(characterEncoding);arg1.setCharacterEncoding(characterEncoding);}arg2.doFilter(arg0, arg1);}@Overridepublic void destroy() {    //web程序关闭时,销毁Filter时将资源对象置为空characterEncoding=null;}
}

  然后在web.xml中进行Filter配置即可。

<filter><filter-name>characterEncodingFilter</filter-name><filter-class>filter.CharacterEncodingFilter</filter-class><init-param><param-name>characterEncoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>enabled</param-name><param-value>true</param-value></init-param>
</filter>
<filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern>//所有页面访问前都要进行过滤
</filter-mapping>

  接下来就可以在使用request和response中直接传递和获取中文参数,不必每次使用之前都进行配置了。

  

转载于:https://www.cnblogs.com/2017Crown/p/7157766.html

过滤器实例——字符编码Filter相关推荐

  1. Filter 字符编码Filter 一

    使用字符编码Filter package com.helloweenvsfei.filter;import java.io.IOException;import javax.servlet.Filte ...

  2. servlet过滤器 实例_Java Servlet过滤器示例教程

    servlet过滤器 实例 Java Servlet Filter is used to intercept the client request and do some pre-processing ...

  3. java 字符过滤器_Java Web---登录验证和字符编码过滤器

    什么是过滤器? 在Java Web中,过滤器即Filter.Servlet API中提供了一个Filter接口(javax.servlet.Filter).开发web应用时,假设编写的Java类实现了 ...

  4. Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在 ...

  5. 字符编码ASCII、Unicode 、UTF-8 及实例汉字与Unicode码的相互转化

    字符编码ASCII.Unicode .UTF-8 及实例汉字与Unicode码的相互转化 ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态, ...

  6. 利用过滤器处理字符,解决中文乱码问题

    1.创建字符编码过滤器对象,名称为CharactorFilter类.该类实现了javax.servlet.Filter,并在都Filter()方法中对请求中的字符编码格式进行设置.代码如下: pack ...

  7. 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  8. unix系统编码 java_JAVA字符编码系列三:Java应用中的编码问题

    这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...

  9. SSH中设置字符编码防止乱码

    1.在web.xml中加入一个过滤器和过滤范围的配置 <filter> <filter-name>encoding</filter-name> <filter ...

最新文章

  1. 分布式存储Ceph 快速安装手册
  2. python读文件代码-简单了解Python读取大文件代码实例
  3. BZOJ 3504: [Cqoi2014]危桥 [最大流]
  4. VS2010生成静态库(.lib)
  5. 通过Web Services上传和下载图片文件
  6. allegro标注尺寸设置_标注新升级 | SOLIDWORKS 2020新功能揭秘
  7. (解决MATLAB的使用问题)避免每次双击.m文件都会自动打开一个matlab程序
  8. 1.数据结构 --- 绪论
  9. 木马群起攻击Word文档 360补丁保护办公安全
  10. html中怎么让图片做背景透明背景图片,透明背景图片怎么做?
  11. 华为证书有效期是多久?证书要到期了怎么办?
  12. 【C语言】算法学习·哈希算法全解
  13. 拔丝芋头的Java学习日记---Day8
  14. python高级变量类型
  15. html怎么混合颜色,CSS3 多色混合背景
  16. 机器学习分类模型评价指标之混淆矩阵
  17. office常用的快捷键
  18. word2vec——训练自己的word2vec模型
  19. 机器学习之特征向量维度与样本空间
  20. MySQL数据库卸载+MySQL常用的图形化管理工具介绍

热门文章

  1. 汇编: 描述内存长度
  2. 02-CSS基础与进阶-day10_2018-09-14-20-38-10
  3. 手动安装K8s第六节:node节点部署-kubelet
  4. 我们来谈谈那些智能家居里的语音对话设备
  5. 微信JSSDK javascript 开发 代码片段,仅供参考
  6. java中关于try、catch、finally中的细节分析
  7. Cisco DHCP and NAT config
  8. android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)...
  9. 一种以动态库的方式使用资源表的方案
  10. Prebuilt binaries of PCL (point cloud library) for Linux