javaweb---过滤器(Filter)

本文深入探讨了Servlet API中的过滤器概念,包括过滤器的基本功能、工作原理、生命周期方法以及过滤器链机制。详细解释了如何在web.xml文件中注册Filter程序,并通过FilterConfig接口访问配置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1.过滤器概述

过滤器的基本功能就是对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理的前后实现一些特殊的功能。

1.2.过滤器基本工作原理

servlet API一共定义了三个接口类来供开发人员编写Filter程序,分别为Filter、FilterChain、FilterConfig。与servlet程序相似,她也是由servlet容器来调用和执行的,Filter通常用来拦截浏览器的servlet请求,因为不管请求的是什么资源,最终web服务器都是以servlet程序的形式来运行的,例如,jsp要先被翻译成servlet、静态图片和HTML文件是由默认的servlet负责处理的,所以,servlet通常就是Filter所要拦截的资源。效果图如下:

1.3.过滤器链

过滤器链效果图:

图中可看出,过滤器链中的只要有任意一个Filter的没执行FilterChain.doFilter方法,则目标方法就不会被执行。

1.4.Filter接口

①.概述

该接口定义了三个方法,init()、doFilter()、destroy()

②.init

在web应用程序启动时,web服务器(web容器)将根据web.xml的配置信息来创建每个Filter的实例对象,并将其保存在内存中。web容器创建完Filter实例后,将立即调用该Filter对象的init方法。init方法在Filter的生命周期中只执行一次,Web容器在调用init方法时,会传入一个包含Filter配置和运行环境信息的FilterConfig对象。如图:

.doFilter

当一个Filter对象能够拦截的访问请求到达后,servlet容器将调用该Filter的doFilter方法,值得注意的是,只有当Filter链中的Filter的init方法执行完后,才能把请求交给这个Filter处理。

④.destroy

只有当容器卸装Filter之前才会执行这个方法,这个方法也只执行一次。

1.5.FilterChain接口

①.过滤器链

1.6.FilterConfig接口

①.Filter程序需要在web.xml文件中注册,在注册Filter程序时,还可以对设置其初始化参数,

普通的servlet程序一样,Filter程序也很可能需要访问servlet容器。servlet规范将代表servletContext对象和Filter的配置参数信息都封装到一个称为FilterConfig对象中,FilterConfig接口必须对外提供获取FilterConfig对象的方法,以便在Filter程序中可以调用这些方法来获取ServletContext,以及获取web.xml文件中为Filter设置的友好名称和初始化参数。

FilterConfig接口定义了如下的方法

getFilerName获取Filter的友好名称

getServletContext获取上下文

getInitParameter获取某个名称的初始化参数值

getInitParameterNames获取所有的参数名称

1.7.Filter的高级应用




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值