(一)Filter简介
Filter 过滤器 ,即是对数据等的过滤,预处理过程。在Servlet中,有时我们需要Filter来进行对信息的过滤,比如在一个管理系统中,我们可以设置过滤器来过滤没有登录的用户访问主页以提高系统的安全性。过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。
(二)拦截
Filter接口中有一个doFilter方法,当开发人员编写好Filter,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,因此,在该方法内编写代码可达到如下目的:
调用目标资源之前,让一段代码执行
是否调用目标资源(即是否让用户访问web资源)。
web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对象,它也提供了一个doFilter方法,开发人员可以根据需求决定是否调用此方法,调用该方法,则web服务器就会调用web资源的service方法,即web资源就会被访问,否则web资源不会被访问。
调用目标资源之后,让一段代码执行。
(三)Filter接口与生命周期
Servlet API提供了一个Filter接口,编写的过滤器必须实现该接口。Filter的创建和销毁由web服务器控制。服务器启动的时候,web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。拦截到请求时,执行doFilter方法。可以执行多次。服务器关闭时,web服务器销毁Filter的实例对象。