简述:
Filter英文释意是过滤器,滤波器。接触过信号处理的一般很熟悉这个概念,但不一定特别理解这个概念。其实,理解这个概念,最简单就是从实际中我们使用过滤器的例子——筛子,通过使用筛子,我们可以将面粉和无意中洒入其中的沙子分离。同样,信号处理中的Filter也是这样的作用,将输入信号用一定的窗函数处理后,过滤掉冗余或者不需要的信息,然后输出。
但是,我们可以考虑在捣鼓筛子的时候再新增一些元素,比如掺入绿豆粉等可以通过滤波器的物质,从而使输出更加丰富。概括的说,在Filter处理过程中,我们可以减少或拦截输入的某些物质,或者掺入更多的物质。这就是Servlet2.3新增的Filter的大致功能。具体差别,将在文章后半部分讨论中陈述。
接口代码:
package javax.servlet;
import java.io.IOException;
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();
}
代码诠释:
上述代码展示了javax.servlet.Filter接口,该接口类定义三个接口方法,分别是init/doFilter/destroy,具体这个三个方法的意义如下表
| 方法名 |
方法意义 |
| init(FilterConfig paramFilterConfig) |
这是Filter的初始化方法,意味着Filter的创建,可以通过FilterConfig实例对象获取web.xml中的初始化参数和servlets上下文。 init 方法只在web容器启动时执行,只会执行一次。对于简单的过滤器,可提供此方法的一个空体,但有两个原因需要使用init。首先,FilterConfig对象提供对servlet环境及web.xml文件中指派的过滤器名的访问。因此,普遍的办法是利用init将 FilterConfig对象存放在一个字段中,以便doFilter方法能够访问servlet环境或过滤器名。其次,FilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器初始化参数。 具体例子,参见Struts |

本文介绍了javax.servlet.Filter接口,它是Servlet2.3新增的功能,用于在请求到达Servlet之前和之后进行逻辑处理,类似AOP的切面。Filter提供了init、doFilter和destroy三个方法。文章探讨了Filter在权限控制、日志记录、数据处理等方面的应用,并通过实例演示了如何配置和使用Filter来设置请求/响应编码。同时澄清了关于Filter的一些常见误解。

7134

被折叠的 条评论
为什么被折叠?



