1、Filter
1.1、什么是Filter?
1.2、举例说明Filter
1.3、Filter的生命周期(与Servlet的生命周期比较)
1.4、FilterConfig类
1.5、FilterChain 过滤器链
2.ThreadLocal的使用
1、Filter
1.1、什么是Filter?
1、首先Filter是一个接口。
2、Filter是java Web三大组件之一。 javaWeb三大组件分别是:Servlet小程序、Filter过滤器、Listener监听器
3、Filter是服务器专门用来过滤请求,拦截响应的。
Filter的常见作用:
1、检查用户访问权限。
2、设置请求响应编码,解决乱码问题。
1.2、举例说明Filter
需求:
现在在WebContent目录下有一个目录admin。这个目录是管理员操作的目录。这个目录里有jsp文件,有html文件,还有图片资源文件。现在我们要让这些资源都在用户登录才能被访问。那么我们要怎么实现这样的需求。
思路:
Session的局限:有人可能会想,我们可以在用户登录之后。把用户的信息保存在Session域对象中。然后在jsp页面里通过Session域对象获取用户的信息,如果用户信息存在,说明用户已登录。否则就重定向到登录页面。这个方案可行。可是html页面呢? html页面是没有Session域对象的。或者访问一张图片呢?如何在访问之前拦截呢?
解决方案:
这就需要我们使用Filter过滤器来进行请求的拦截。然后判断Session域对象中是否包含用户的信息。
现在我们以admin目录下user.jsp为例进行讲解。
1、首先,我们需要创建一个类来实现Filter接口,用来检查Session中是否包含用户信息。
2、实现Filter中的doFilter方法
3、然后到web.xml文件中去配置Filter的过滤信息。
4、然后重启服务器访问测试