Java Web学习(十一)Java过滤器
一、引言
上一篇文章学习了java三大器的拦截器,拦截器主要是针对于action请求进行拦截处理的,那么对于requst的一些信息如果在调用前,想先进行过滤和处理,那么就要使用到第二个神器,也就是本文的主角过滤器~那首先先简单了解一下过滤器的基本原理。
概念:拦截request进行处理后再交给下一个过滤器或servlet处理的中间组件,也可以对返回的response进行拦截处理。
作用域:在服务器启动时就会创建的,只会创建一个实例,常驻内存。
应用场景:统一设置编码格式、访问权限控制、敏感字符过滤、自动登录等。
下面通过代码来看下过滤器的几个应用场景~
二、代码实现
实现过滤器功能,我们得先进行一些前期的配置:

按照上图配置好了以后,重启SpringBoot项目时,我们自定义的过滤器就能生效了
字符编码过滤器
/**
* 字符编码过滤器
* @Author 有梦想的肥宅
*/
@WebFilter(
urlPatterns = "/*",/*通配符(*)表示对所有的web资源进行拦截*/
initParams = {
@WebInitParam(name = "filterName", value = "CharsetFilter"),
@WebInitParam(name = "charset", value = "utf-8")
})
@Order(1)//指定过滤器的执行顺序,值越大越靠后执行
public class CharsetFilter implements Filter {
private String filterName;
private String charset; /**
* 初始化方法 接收一个FilterConfig类型的参数 该参数是对Filter的一些配置
*/
@Override
public void init(FilterConfig config) throws ServletException {
filterName = config.getInitParameter("filterName");
charset = config.getInitParameter("charset");
System.out.println("过滤器名称:" + filterName);
System.out.println("字符集编码:" + charset); } /**
* 过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理
*/
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
System.out.println(filterName + "doFilter()");
req.setCharacterEncoding(charset);//设置请求request的字符编码
resp.setCharacterEncoding(charset);//设置响应response的字符编码
chain.doFilter(req, resp);
} /**
* 销毁时方法
*/
@Override
public void destroy() {
System.out.println(filterName + "销毁");
} }
源码贴上了,来简单解析一下:



我们常用的过滤器配置有一下几种:
urlPatterns:配置要拦截的资源
- 1、以指定资源匹配。例如"/login.html"
- 2、以目录匹配。例如"/user/login/*"
- 3、以后缀名匹配,例如"*.html"
- 4、通配符,拦截所有web资源。"/*"
initParams:配置初始化参数
- 使用@WebInitParam注解来配置,如:@WebInitParam(name = "charset", value = "utf-8")
参考文章:
Java Web学习(十一)Java过滤器的更多相关文章
- java web学习总结(十七) -------------------过滤器
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- java web 学习十一(使用cookie进行会话管理)
一.会话的概念 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾 ...
- java web 学习笔记 - Java Bean
1. Java Bean 是一个简单的 java 类,一般放在WEB-INF下的 classes目录下(如果没有则需要手工新建) 一个简单的Bean包括属性,getter ,setter方法,如果没有 ...
- java web 学习笔记 编码问题总结
java web 学习笔记 编码问题总结 1.非form表单中提交的中文参数---------------------------传递给Servlet服务器时,默认以iso-8859-1解码 ...
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问
本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这 ...
- Java Web学习系列——Maven Web项目中集成使用Spring
参考Java Web学习系列——创建基于Maven的Web项目一文,创建一个名为LockMIS的Maven Web项目. 添加依赖Jar包 推荐在http://mvnrepository.com/.h ...
- Java web 学习之旅
java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- CentOS 阿里源
[centos] name=centos baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/ enabled= gpgcheck= [epel] ...
- c++: internal compiler error: Killed (program cc1plus)
转自https://blog.csdn.net/qq_27148893/article/details/88936044 这是在开发板上编译opencv的时候报了一个错,主要是在编译过程中,内存不够造 ...
- 【转】Echarts 数据绑定
Echarts 数据绑定 简单的统计表已经可以生成,不过之前图标数据都是直接写在参数里面的,而实际使用中,我们的数据一般都是异步读取的.EChart.js对于数据异步读取这块提供了异步加载的方法. 绑 ...
- 大型Kubernetes集群的资源编排优化
背景 云原生这个词想必大家应该不陌生了,容器是云原生的重要基石,而Kubernetes经过这几年的快速迭代发展已经成为容器编排的事实标准了.越来越多的公司不论是大公司还是中小公司已经在他们的生产环境中 ...
- React设计模式相关
关于我在React设计模式上做的一些思考: 一,项目里实战的经历 最开始我根据组件不同的职能定义,拆分了展示组件和容器组件两大类,后来随着业务逻辑越来越复杂,容器组件代码越来越冗长,我又加入了HOC高 ...
- 让这个Java语言的开源商城系统火起来
Java是一门非常优秀的面向对象编程语言,功能强大且简单易用,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,凭借其简单性.面向对象.分布式.健壮性.安全性.平台独立与可 ...
- Vue.$set的使用场景
有这样一个需求,用户可以增加多个输入框可以编辑: 实现的思路很简单,点击增加的时候,往一个数组里面push一条数据即可: <template> <div> <di ...
- 利用阿里云服务器免费体验word press博客、个人网站
本文首发于我的个人博客:https://chens.life/create-wordpress-blog.html 前言 目前市面上有许许多多的虚拟云服务器ECS,例如阿里云.华为云.又拍云等等,他们 ...
- 深入了解Kafka【二】工作流程及文件存储机制
1.Kafka工作流程 Kafka中的消息以Topic进行分类,生产者与消费者都是面向Topic处理数据. Topic是逻辑上的概念,而Partition是物理上的概念,每个Partition分为多个 ...
- HDOJ 1003
动态规划一直AC不了竟然是因为一厢情愿的多加了一个#! printf("Case #%d:\n",count); --------------------------------- ...