javax.servlet.Filter接口解析

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

简述:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值