概述:拦截请求与过滤请求
应用场景: 1 权限检查
2 日记操作
3 事物管理
Filter的初体验
创建过滤器以及生命周期
implements Filter(接口)实现Filter接口方法
1. init(FilterConfig filterConfig)初始化方法,在服务器启动的时候就执行。web工程启动已经执行
2. doFilter(ServletRequset requset,ServletRespone response,FilterChain chain)过滤器拦截的业务逻辑处理。 每次拦截到请求,就会执行
3. destroy() 销毁过滤器实例的时候调用。web工程结束就会注销
interface FilterChain 过滤链:doFilter(ServletRequest request ServletRespone response)
执行下一个过滤器或者放行(访问动态资源)
配置Filter路径
方式一:不推荐使用
方式二:使用注解(Servlet3.0支持注解)推荐使用
FilterConfig类
它时Filter过滤器的配置文件类。Tomact每次创建Filter的同时就会创建一个FilterConfig类,这里包含了Filter配置信息: 获取Filter的名称:filter-name
获取在Filter中配置的init-param的初始化值
获取ServletContext对象。
Filter的拦截路径
精准匹配:
<url-pattern>/target.jsp<url-pattern> http://ip:port/工程路径/target.jsp
目标匹配:
<url-pattern>/admin/*<url-pattern> http://ip:port/工程路径/admin/*
后缀名匹配:
<url-pattern>*/html<url-pattern> http://ip:port/工程路径/...../xxx.html
ThreadLocal的使用
ThreadLocal的作用,它可以解决多线程的数据安全问题。
ThreadLocal它可以给当前线程关联一个数据(普通变量,对象,数组,集合)
ThreadLocal的特点:
1、ThreadLocal可以为当前线程关联一个数据。(它可以像Map一样存取数据,key为当前线程)
2、每一个ThreadLocal对象,只能为当前线程关联一个数据,如果要为当前线程关联多个数据,就需要使用多个ThreadLocal对象实例。
3、每个ThreadLocal对象实例定义的时候,一般都是static类型
4、ThreadLocal中保存数据,在线程销毁后。会由JM虚拟自动释放。
主要是set与get方法
简单理解
ThreadLocal的作用主要是做数据隔离,填充的数据只属于当前线程,变量的数据对别的线程而言是相对隔离的,在多线程环境下,如何防止自己的变量被其它线程篡改。