什么是Filter?
- 它是javaweb的三大组件之一(Servlet程序、Listener监听器、Filter过滤器)
- 它是javaEE的规范 , 也就是接口
- 作用:拦截请求(主要),过滤响应
拦截请求常见的应用场景
- 权限检查
- 日记操作
- 事务管理
- …
应用测试例1:
要求:在你的web工程下,有一个admin目录,这个目录下的所有资源(HTML 页面,jpg图片,
jsp文件...)都必须在用户登录以后才允许访问
用户登录之后,都会将用户登录的信息保存到session域中,所有要检查用户是否登录,可以判断
Session中是否有包含用户登录的信息即可
客户端发送请求到服务器,在服务器中先经过一层过滤器(过滤器先检查用户的权限(登录验证)),过滤器中判断有权限让程序默认执行去访问所需的资源;判断无权限让它跳转到登录页面或者提示拒绝此次访问
Filter的生命周期
Filter的生命周期
- 构造器方法
- init初始化方法
- doFilter过滤方法
- destroy 销毁方法
FilterConfig类
见名知意,它是Filter过滤器的配置文件类
Tomcat每次创建Filter的时候也会同时创建一个FilterConfig类,
这里包含了Filter配置文件的配置信息
FilterConfig类的作用是获取Filter过滤器的配置内容
- 获取Filter的别名filter - name的内容
filterConfig.getFilterName();
- 获取在Filter 中配置的 init - param初始化参数
filterConfig.getInitParameter("参数名");
- 获取ServletContext对象
filterConfig.getServletContext();
—————————————————————————————————————
FilterChain 过滤器链
过滤器链标示的是多个过滤器如何一起工作。
FilterChain.doFilter();
1 执行下一个Filter过滤器(如果有)这样就规定了怎样经过这些过滤器
2 执行目标资源(没有Filter了 )
Filter的拦截路径
1精确匹配
<url - pattern>/ target.jsp</url - pattern>
以上配置的路径,表示请求的地址必须为:
http://ip:port/工程路径/target.jsp
2目录匹配
<url - pattern>/adimin//*
</url - pattern>
以上配置的路径,表示请求地址必须为:
http://ip:port/工程路径/admin/*(这个目录下全部资源)
3后缀名匹配
<url - pattern>*.html</url - pattern>
表示请求地址必须以.html结尾,不关心其余任何属性。