1、生命周期
在tomcat初始化时,就加载init方法,执行拦截时使用doFilter方法,tomcat把容器销毁时就执行destroy方法。
只要命中过滤规则就触发doFilter方法,可根据条件判断是否调用chain.doFilter方法,即是否让目标资源执行。
2、 只要访问cookieServlet,就会被filter进行拦截
3、拦截所有请求(用通配符)
4、参数配置
参数可以通过配置传进来,无需写死。使用filterConfig可以帮忙拿到过滤器基本信息。用debug可看出每一步所获得的值。
5、用户访问个人页面拦截
1)、LoginServlet
2)、LoginFilter
3)、LoginOutServlet
4)、login.jsp
5)、user.jsp
6)、
此时再访问user.jsp则不会有问题,因为session里面已有用户信息。若此时点击“退出”后再访问此jsp,则会返回登录界面,并显示“非法访问,请登录”:
7)、逻辑过程:
LoginFilter:拦截user文件夹下的信息、LoginServlet信息。
首先访问user.jsp,命中LoginFilter。由于session中没有用户信息,所以跳转到login.jsp。
用户输入登录信息后,触发LoginServlet。若用户名与密码正确,则在session里面存入loginuser信息,跳转到user.jsp。否则返回login.jsp页面。
session中有用户登录信息后,则用户可以随时访问user.jsp:
点击“退出”后,触发LoginOutServlet,session失效,就跳转到login.jsp。
8)、优点
在filter里面统一编写,就不用在每个servlet里面判断用户登录信息了。
9)、注意
有多个filter时设置优先级,或者把其他filter里面的参数配置注解掉,防止filter互相命中。