up:: 常用功能与过滤器内容概述
本篇博客主要介绍过滤器的基本内容,同时编写一个过滤器小例子。
一:过滤器简介
1.什么是过滤器?
空气净化器,净水器,车站安检系统:过滤某些东西;
而且这些过滤流程中往往有好多关,“过滤”好多次;比如飞机安检就有三个“过滤器”,会先检查行李,然后检查随身包裹,然后检查身体,任何一关不通过都无法登机。
如果在JavaWeb中:向一个web应用发去很多请求,有的请求符合要求,有的请求不符合要求,Java提供了过滤器对其进行处理。
比如有的请求不完善,需要过滤器拦截后处理一下再向后传递;;;而有的请求是不能放行的,对于这样的请求就不适用chain.doFilter()以达到中断拦截的作用;
任何一个Servlet都内置了过滤器:可以这样理解,编写好的过滤器可以直接应用到Servlet中,底层已经处理好了。。。。
2.过滤器执行过程:
3.过滤器开发的三要素:
二:过滤器范例
1.创建过滤器
第一步:创建一个web工程,并编写一个类实现Filter接口:即编写过滤器类
MyFirstFilter: 一个类想要成为一个过滤器类,需要实现javafx.servlet.Filter接口 ;实现Filter接口的类必须实现init(),doFilter(),destroy()方法。重点关注doFilter()方法,这个方法需要我们去编写,这儿出于简单演示目的,我们只让doFilter()方法在控制台打印“过滤器已执行”。
第二步:过滤器编写好之后,需要在web.xml进行配置:这儿处于简单演示目的,url-pattern设成了/*,即对所有url都进行拦截;
至此,一个过滤器已经编写好了!
2.测试过滤器是否编写成功
为了测试过滤器,添加index.html和HelloServlet两个资源:(自然这访问这两个资源的url也不同,仅仅是为了对应下上面的/*而已)
运行程序:
访问index.html:
发现控制台
访问HelloServlet:
注:
(1)可以看到,将过滤器类编写完成并在web.xml中配置后,并没有在Servlet或html中设置过滤器,估计这个工作是Tomcat服务器完成了吧
……这应该也印证了博客开头说的“任何一个Servlet都内置了过滤器:可以这样理解,编写好的过滤器可以直接应用到Servlet中,底层已经处理好了。。。。”这句话。
(2021-11-18加):
J2EE定义了很多java的标准,这些标准包括Servlet,filter等;Tomcat这个第三方厂商容器提供了这些标准的实现;也就是,Tomcat提供了Servlet和filter的实现;所以,当我们基于Tomcat使用Servlet和filter时,直接拿来用就行了;Servlet和filter的整合工作,J2EE标准和Tomcat已经帮我们做好了,作为用户直接拿来用就行了;