Servlet过滤器(2)

本文介绍了Servlet容器中的过滤器API核心概念,包括Filter接口及其生命周期方法、FilterConfig接口、过滤器的配置方式及过滤器链的工作原理。通过示例展示了如何在web.xml中配置过滤器。

过滤器API
由容器实现的接口
javax.servlet.Filter
javax.servlet.FilterChain
javax.servlet.FilterConfig
四个包装器类
javax.servlet.ServletRequestWrapper
javax.servlet.ServletResponseWrapper
javax.servlet.http.HttpServletRequestWrapper
javax.servlet.http.HttpServletResponseWrapper

Filter接口
Filter接口是过滤器API的核心
filter

容器仅调用过滤器实例的init()方法一次。在init()方法没有执行完前,容器不会转发任何请求到过滤器

过滤器的生命周期方法 ,过滤器API不提供Filter接口的任何实现 。自定义的过滤器必须明确地实现所有三个方法

doFilter()方法给过滤器对象一个机会来处理请求,转发请求到过滤器链中的下一个组件,或者自己回复客户端

FilterConfig接口
为过滤器提供初始化参数 由Servlet容器实现
这里写图片描述

可以使用ServletContext与Web应用程序的其它组件一起共享application中的属性

配置Filter
< filter >元素
< filter >

< filter-name >ValidatorFilter< / filter-name >
< description>Validates the requests< / description >
< filter-class >com.lovobook.filters.ValidatorFilter< /filter-class >

< init-param >
< param-name>locale< /param-name>
< param-value>USA< /param-value>
< /init-param>

< /filter>

< filter-mapping >元素

< filter-mapping >
< filter-name >ValidatorFilter< /filter-name >
(所有匹配到该URL定义的请求,都要被filter-name中定义的过滤器过滤。)
< url-pattern >*.doc
< /filter-mapping >

< filter-mapping >
< filter-name >ValidatorFilter< /filter-name >
< servlet-name >reportServlet< /servlet-name >
(servlet-name用于定义一个servlet名,所有对该servlet的访问都要被filter-name中定义的过滤器过滤)
< /filter-mapping >

配置过滤器链

用多个过滤器处理在同一个请求
使用多个< filter-mapping >元素配置过滤器链
首先调用匹配请求URI的过滤器 < url-pattern >
再查找用Servlet名匹配请求URI的所有过滤器< servlet-name >
过滤器的顺序按照它们在部署描述文件中出现的顺序排序

< filter-mapping >
< filter-name>FilterA< / filter-name >
< servlet-name>RedServlet< / servlet-name >
< / filter-mapping >

< filter-mapping>
< filter-name>FilterB< / filter-name >
< url-pattern>*.red< / url-pattern >
< /filter-mapping>

< servlet-mapping>
< servlet-name>RedServlet< / servlet-name>
< url-pattern>*.red< / url-pattern>

容器会先调用匹配请求URI的过滤器,然后才是匹配servlet名的过滤器。因此,FilterB始终在FilterA之前调用

【电能质量扰动】基于ML和DWT的电能质量扰动分类方法研究(Matlab实现)内容概要:本文研究了一种基于机器学习(ML)和离散小波变换(DWT)的电能质量扰动分类方法,并提供了Matlab实现方案。首先利用DWT对电能质量信号进行多尺度分解,提取信号的时频域特征,有效捕捉电压暂降、暂升、中断、谐波、闪变等常见扰动的关键信息;随后结合机器学习分类器(如SVM、BP神经网络等)对提取的特征进行训练与分类,实现对不同类型扰动的自动识别与准确区分。该方法充分发挥DWT在信号去噪与特征提取方面的优势,结合ML强大的模式识别能力,提升了分类精度与鲁棒性,具有较强的实用价值。; 适合人群:电气工程、自动化、电力系统及其自动化等相关专业的研究生、科研人员及从事电能质量监测与分析的工程技术人员;具备一定的信号处理基础和Matlab编程能力者更佳。; 使用场景及目标:①应用于智能电网中的电能质量在线监测系统,实现扰动类型的自动识别;②作为高校或科研机构在信号处理、模式识别、电力系统分析等课程的教学案例或科研实验平台;③目标是提高电能质量扰动分类的准确性与效率,为后续的电能治理与设备保护提供决策依据。; 阅读建议:建议读者结合Matlab代码深入理解DWT的实现过程与特征提取步骤,重点关注小波基选择、分解层数设定及特征向量构造对分类性能的影响,并尝试对比不同机器学习模型的分类效果,以全面掌握该方法的核心技术要点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值