Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2313997
  • 博文数量: 252
  • 博客积分: 5472
  • 博客等级: 大校
  • 技术积分: 3107
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-17 18:39
文章分类

全部博文(252)

文章存档

2012年(96)

2011年(156)

分类: 系统运维

2011-12-13 15:41:13

Filter API :

与过滤器开发相关的接口与类都包含在javax.serlvet和javax.servlet.http包中,主

要有下面的接口和类。

·javax.servlet.Filter接口

·javax.servlet.FilterConfig接口

·javax.servlet.FilterChain接口

·javax.servlet.ServletRequestWrapper类

·javax.servlet.ServletResponseWrapper类

·javax.servlet.http.HttpServletRequestWrapper类

·javax.servlet.http.HttpServletResponseWrapper类

 

Filter接口

  1. ·public void init(FilterConfig filterConfig)throws ServletException

Web容器调用该方法该方法来初始化过滤器。容器在调用该方法时,向过滤器传递

FIlterConfig对象,FilterConfig的用法和ServletConfig(参见以前相关内容)类似

。利用FilterConfig对象可以得到ServletContext对象,以及部署描述符中配置的过滤

器的初始化参数。在这个方法中,可以抛出ServletException异常,通知容器该过滤器

不能正常工作。

  1. ·public void doFilter(ServletRequest request,ServletResponse

  2. response,FilterChain chain)throws java.io.IOException,ServletException

doFilter()方法类似于Servlet接口的service()方法。当客户端请求目标资源的时候,

容器就会调用与这个目标资源相关联的过滤器的doFilter()方法。在特定的操作完成后

,可以调用chain.doFilter(request,response)将请求传给下一个过滤器(或目标资源

),也可以直接向客户端返回响应信息,或者利用RequestDispatcher的forward()和

include()方法,以及HttpServletResponse的sendRedirect()方法将请求转向到其他资

源。需要注意的是,这个方法的请求和响应参数的类型是ServletRequest和

ServletResponse,也就是说,过滤器的使用并不依赖于具体的协议。

  1. ·public void destroy()

Web容器调用该方法指示过滤器的生命周期结束。在这个方法中,可以释放过滤器使用

的资源。

与开发Servlet不同的是,Filter接口并没有相应的实现类可供继承,要开发过滤器,

只能直接实现Filter接口。

 

FilterConfig接口:

javax.servlet.FilterConfig接口类似于javax.servlet.ServletConfig接口,用于在

过滤器初始化时,向其传递信息。FilterConfig接口有容器实现,容器将其作为参数传

入过滤器对象的init()方法中。在FilterConfig接口,定义了4个方法:

  1. ·public java.lang.String getFilterName()

得到描述符中指定的过滤器的名字。

  1. ·public java.lang.String getInitParameter(java.lang.String name)


  返回在部署描述中指定的名字为name的初始化参数的值。如果不存在返回null.

  1. ·public java.util.Enumeration getInitParameterNames()


  返回过滤器的所有初始化参数的名字的枚举集合。

  1. ·public ServletContext getServletContext()


  返回Servlet上下文对象的引用。

 

FilterChain接口:

FilterChain接口由容器实现,容器将其实例作为参数传入过滤器对象的doFilter()方

法中。过滤器对象使用FilterChain对象调用过滤器链中的下一个过滤器,如果该过滤

器是链中最后一个过滤器,那么将调用目标资源。FilterChain接口只有一个方法,如

下:

  1. ·public void doFilter(ServletRequest request,ServletResponse response)

  2. throws java.io.IOException

调用该方法将使过滤器链中的下一个过滤器被调用。如果是最后一个过滤器,会调用目

标资源。

 

阅读(2443) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~