Filter接口源代码:
public abstract interface Filter{ public abstract void init(FilterConfig paramFilterConfig) throws ServletException; public abstract void doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain paramFilterChain) throws IOException, ServletException; public abstract void destroy(); }
Filter的工作原理:
Filter接口中有一个doFilter方法,当我们编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法 。
Filter开发步骤:
Filter开发分为2步:
* 编写java类实现Filter接口,并实现其doFilter方法。
* 在web.xml 文件中使用<filter>和<filter-mapping>元素对编写的filter类进行注册,并设置它所能拦截的资源。
示例:
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; /** * @author yangcq * @description 过滤器Filter的工作原理 */ public class FilterTest implements Filter{ public void destroy() { System.out.println("----Filter销毁----"); } public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) throws IOException, ServletException { // 对request、response进行一些预处理 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); System.out.println("----调用service之前执行一段代码----"); filterChain.doFilter(request, response); // 执行目标资源,放行 System.out.println("----调用service之后执行一段代码----"); } public void init(FilterConfig arg0) throws ServletException { System.out.println("----Filter初始化----"); } }
web.xml里配置filter:
- <filter>
- <description>过滤器名称</description>
- <filter-name>自定义的名字</filter-name>
- <filter-class>com.yangcq.filter.FilterTest</filter-class>
- <!--配置FilterTest过滤器的初始化参数-->
- <init-param>
- <description>配置过滤器的初始化参数</description>
- <param-name>name</param-name>
- <param-value>gacl</param-value>
- </init-param>
- <init-param>
- <description>配置FilterTest过滤器的初始化参数</description>
- <param-name>like</param-name>
- <param-value>java</param-value>
- </init-param>
- </filter>
Filter链:
在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称之为一个Filter链。web服务器根据Filter在web.xml文件中的注册顺序,决定先调用哪个Filter,当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了ilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,
如果没有,则调用目标资源。
相关推荐
Java三大器过滤器&拦截器&监听器实现,其中每一个包都能单独运行,但是全部一起运行时会报错,原因是SpringBoot有关@Bean注入的问题,作者学艺不精只有待以后学懂后改,大家先将就看,源码解析及有关Java三大器理解...
Python基础(补充):python三大器之迭代器 迭代器是 Python 中的一种重要数据类型,它们是可重复执行的对象,用于实现循环操作。迭代器的概念来自于数学中的迭代法,即重复执行一系列运算步骤,从前面的量依次求出...
1. **天赋与决心** - 文中的"大器之才"指的是具有非凡才能和潜力的人,比尔·盖茨就是这样的例子。他在年幼时就表现出了超出同龄人的聪颖好学,对图书管理表现出浓厚的兴趣,并且愿意付出努力去做好这件事。 2. **...
Python 基础补充:Python 三大器之生成器 Python 中的生成器(Generator)是一种特殊的数据结构,能够在循环的过程中不断推算出后续的元素,从而节省大量的空间。生成器可以用两种方式创建:生成器表达式和生成器...
Python基础(补充):python三大器之装饰器 Python中的函数是一等公民,可以作为参数传递,也可以作为返回值返回。高阶函数可以接受函数作为参数,也可以把函数作为结果值返回。在本文中,我们将学习Python中的...
【大器之才】这个词语在文章中用来形容比尔·盖茨,指的是具有很高才能、能够成就大事业的人。这个词语通常用于赞扬那些具备非凡潜力和杰出能力,有望在未来取得显著成就的个体。在文章中,这个四年级的男孩表现出的...
设计方波——三角波——正弦波函数信号发生器 一、总体介绍 本设计报告介绍了一个完整的函数信号发生器的设计,能够产生方波、三角波和正弦波三个基本波形。该设计使用集成运算放大器和晶体管差分放大器共同组成的...
动力电池-国之大器,锂电崛起.pdf
动力电池:国之大器,锂电崛起.pdf
【标题】"非常大器漂亮实用的查询源码"揭示了这是一个美观且功能强大的查询功能的源代码。源码通常是编程人员为了实现特定功能而编写的代码,它提供了对程序内部逻辑的直接访问,便于其他开发者研究、学习或在自己的...
multisim仿真,低频功率发大器
免杀过云杀专用。可以把文件虚胖到几百M,轻松过云杀压缩后仍然原体积压缩,释放后几百M。干什么你懂得
6. **过滤机制**:为了防止重复内容的出现,大器新闻采集还具有内容过滤机制,能够识别已经发布的新闻,避免重复采集和发布。 7. **自定义发布模板**:用户可以根据自己的需求,设计个性化的新闻发布模板,使发布的...
《大器新闻采集1[1].5.0 FOR Discuz!X1.5》是一款专为Discuz!X1.5论坛系统设计的新闻采集工具,其主要功能是自动化地从互联网上抓取新闻内容,并将其发布到基于Discuz!X1.5平台的论坛中。这款软件旨在提高网站内容...
这正是“勤奋自学成大器”主题的核心要义——无论遇到多大的挑战,都不应放弃追求知识和梦想。 在教案的结尾,我们可以引导学生讨论海伦·凯勒的故事给他们的启示。通过小组讨论或者个人反思的方式,让学生思考海伦...
第三步:把darqi目录下的子目录images读写权限设成777,这个是为图片本地化用的,如果设置不同目录存放,则要将该目录读写权限设置成777; 第四步:将压缩包中cron目录下的文件cron_darqi_auto.php上传到你的论坛...
总而言之,动力电池作为国之大器,其发展不仅关系到新能源汽车的未来,更与国家的能源安全和环境可持续发展息息相关。锂电崛起的故事,是一部技术创新、产业升级和市场驱动交织的生动篇章。我们期待着在不断突破技术...
"ios-大器建筑.zip"这个压缩包可能包含了一个关于智能硬件App开发的项目或者教程资源,尽管具体内容无法直接查看,但我们可以根据其标题和描述推测其中可能涵盖的关键知识点。 1. **iOS开发基础**:首先,理解并...
在小学五年级的语文课堂上,学生们迎来了一堂别开生面的课——《勤奋自学成大器》。这一课不仅是一次语文知识的学习,更是一次关于自学精神和人格力量的教育。教案的设计紧贴沪教版五年级语文下册的教学要求,旨在...