Filter开发
本章将详细介绍Filter的定义和作用,还将介绍如何配置Filter。将详细介绍Filter的生命周期,以及一些常用的Filter,如非法文字过滤器、字符编码过滤器以及登录验证过滤器。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握如何定义并配置Filter
理解Filter的生命周期
熟练掌握如何添加非法文字过滤器
熟练掌握如何添加字符编码过滤器
熟练掌握如何添加登录验证过滤器
1.1Filter简介
Filter的中文译名为过滤器。从字面名称就可以看出来Filter是用来进行过滤的。借助于过滤器可以实现如下功能。
(1)过滤非法文字和信息。
(2)设置统一字符编码。
(3)对用户进行登录验证。
(4)改变图片文件格式。
(5)对相应做压缩处理。
(6)对XML的输出使用XSLT来进行转换。
在Servlet 2.3之后,如果要添加Filter只需在web.xml中配置相关设定即可。可以非常方便的为Web项目添加新的Filter和修改现有的Filter,而不需要修改原有的Servlet、JSP以及其他静态页面文件。
1.2第一个Filter程序
Filter同Servlet类似同样也是一个Java类,所以其添加方式和普通的Java类完全相同。自定义的Filter类必须实现Filter接口,还必须实现Filter接口中定义的init()方法、doFilter()方法和destroy()方法。
其中init()方法和destroy()方法分别用来初始化和销毁时调用。doFilter()方法用来实现过滤,所有的处理代码都放置在该方法中。doFilter()方法接受三个参数,分别是request、response和chain。其中request和response用来传递给下一个Filter(如果有多个Filter)或者JSP和Servlet。chain则通过调用其doFilter方法来调用下一个Filter,获得调用原始的JSP或者Servlet等其他内容。
1.3Filter生命周期
Filter同Servlet类似也具有生命周期。Filter从生成到销毁必须进过如下几个步骤。
(1)生成Filter,并通过调用其init()方法来进行初始化。
(2)过滤用户请求,调用其doFilter()方法。
(3)调用destroy()方法进行销毁,并通过垃圾收集器进行收集清理。
2 常用Filter
本节将介绍一些常用的Filter,如非法文字过滤器、字符编码过滤器、登录验证器。
2.1非法文字过滤器
实现非法文字过滤器非常简单,首先通过Filter类中doFilter()方法的request参数来获得客户端的输入。然后通过对输出的文字进行判断并进行处理,如替换该非法文字或者提示输出非法文字要求重新输出等等。最后通过chain的doFilter方法来调用下一个Filter,获得调用原始的JSP或者Servlet等其他内容。
2.2字符编码过滤器
可以通过Filter来定义一个字符编码过滤器,这时就不需要在每个JSP页面中添加设置参数字符编码格式代码了。
2.3登录验证过滤器
可以通过Filter来定义一个登录验证过滤器,这时就不需要在每个JSP页面中添加判断用户合法性代码了。
具体配置:
静态及默认通过文件路径配置
<!-- 訪問路徑過濾及session登录校验过滤 -->
<filter>
<filter-name>Filter</filter-name>
<filter-class>com.***.filter.FilterDemo</filter-class>
<init-param>
<param-name>allowed</param-name>
<param-value>***.jsp,***.jpg</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 字符转码 -->
<filter>
<filter-name>EncodChar</filter-name>
<filter-class>com.***.filter.EncodChar</filter-class>
<init-param>
<param-name>ChangeWord</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodChar</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
------------------java类-------------------------
public class FilterDemo implements Filter{
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
*****
}
public void init(FilterConfig config) throws ServletException {
*****
}
}
分享到:
相关推荐
Filter 开发,,,Filter 开发
在本教程中,我们将深入探讨如何在Windows 10环境下使用Visual Studio 2013开发一个最简单的Transform Filter,即实现视频的上下翻转功能。 首先,我们需要理解DirectShow的基本概念。DirectShow是Microsoft提供的...
Directshow的Filter开发简要步骤-C++技术文章-C++-程序设计-技术资料
最简单的基于FFmpeg的AVfilter例子(水印叠加)。FFMPEG中有一个类库:libavfilter。该类库提供了各种视音频过滤器。本代码在libavfilter基础上完成了一个水印叠加器。 该代码完成了一个水印叠加的功能。...
在IT行业中,驱动程序开发是操作系统与硬件之间的重要桥梁,其中Filter驱动开发是特定的一种,主要涉及对系统级驱动的扩展或干预。本篇笔记主要围绕"Filter驱动开发"这一主题,特别是DNIS(Driver for Network ...
#### 三、DirectShow Filter开发实践 **3.1 滤镜类型** 为了实现特定的功能,需要根据需求选择合适的滤镜类型。例如,若要实现虚拟摄像头功能,则需要编写转换滤镜来处理图像数据并传递给底层驱动程序。 **3.2 ...
在Java Web开发中,MVC(Model-View-Controller)模式是一种常见的架构设计,用于分离应用程序的业务逻辑、用户界面和数据访问。Struts2框架是实现MVC模式的一个流行选择,它提供了一种优雅的方式来组织和管理应用...
总的来说,MATLAB中的kalmanfilter开发涉及到理解滤波器的基本原理,设置合适的系统参数,编写或配置MATLAB代码或Simulink模型,并进行性能评估。通过对`studentdave_kalmanfilter_code.m`的分析和实验,可以深入...
在DirectShow领域,Filter是构建媒体处理管道的关键组件。...在DirectShow Filter开发中,理解Filter Graph的工作原理、熟悉COM编程和Windows API调用至关重要。不断实践和学习,你将能够创建出强大的多媒体处理工具。
描述中的 "ISAPI Filter, IIS 插件开发实例源代码" 暗示这个压缩包内可能包含了一些实际的代码示例,用于演示如何开发 ISAPI Filter 插件。开发者可以通过学习这些示例,理解如何在 IIS 上创建自己的服务器扩展,以...
### Filter程序开发与应用知识点详解 #### 一、Filter概述 **Filter** 是 Java Web 开发中的一个重要组件,主要用于对用户请求和响应进行预处理和后处理。它可以帮助开发者实现诸如登录验证、权限控制、日志记录等...
对于Filter开发人员来说,掌握DirectShow Filter的相关知识至关重要,因为这将直接影响到多媒体应用程序的性能和兼容性。 DirectShow Filter可以被看作是一个个处理单元,它们按照特定的拓扑结构(Filter Graph)...
此外,"DirectShow Filter开发学习总结.doc"文档可能详细介绍了在开发过程中遇到的问题、解决策略以及最佳实践。这包括如何调试Filter Graph,如何处理各种媒体格式,以及如何优化性能等。 总的来说,掌握...
【DirectShow 源Filter开发基础】 在 DirectShow 这个多媒体框架中,源Filter(Source Filter)扮演着提供原始数据的角色,例如从文件、摄像头等设备获取数据。本篇文章将详细阐述创建一个最简单的源Filter的基本...
AC3Filter是一款开源的 Directshow 音频解码插件。ac3filter支持MPEG1/2、AC3、DTS、LPCM格式的音频解码,支持多音轨,SPDIF输出,Dolby ProLogic 解码。
在商业编程领域,自定义FILTER...总的来说,这个源码资源是学习和理解自定义FILTER开发的一个宝贵实例,通过学习,你可以提升在商业编程中应用图像处理技术的能力,从而在各种项目中创造出独特且引人入胜的视觉效果。
总的来说,`Laravel开发-modelfilter`是一个提高代码组织和查询效率的策略,它使你能够更灵活地处理复杂的查询场景,同时保持代码的清晰和整洁。通过实践和理解这个概念,你可以提升Laravel项目的质量和开发效率。在...
cups打印过滤器,用来补充cups的过滤器,以支持pdf等文件的打印
4. **Filter开发**:指南可能包括自定义过滤器的编写,涉及COM接口的实现,如`IMediaFilter`、`IPin`和`IBaseFilter`等。 5. **数据流处理**:讲解如何处理音视频数据流,包括编码、解码、格式转换等。这涉及到诸如...