Filter
通过注释配置
@WebFilter(" /* ") 访问任何资源都会被执行
chain.doFilter(Request,Response) 放行
init方法执行一次
doFilter方法执行多次
destroy方法执行多次
拦截路径配置
具体的资源路径 /index.jsp
目录拦截 /user/* 访问/user下的所有资源时,都会执行
后缀名拦截 *.jsp 没有/
拦截所有资源 /* 拦截所有资源
拦截方式的配置:资源被访问的方式
-
REQUEST
-
FORWARD
-
INCLUDE
-
ERROR
-
ASYNC
@WebFilter(value = " /* ",dispatcherTypes = Dispatcher.REQUEST)
//浏览器直接请求资源时,该过滤器会执行
@WebFilter(value = " /* ",dispatcherTypes ={ Dispatcher.REQUEST,Dispatcher.FORWARD})
//配置两种拦截方式
过滤器链(多个过滤器)
注解配置:按照类名的字符串比较规则比较,值较小的先执行
增强对象的功能
设计模式
1.装饰模式
2.代理模式
真实对象:被代理的对象
代理对象
代理模式:代理对象的真实对象,达到增强真实对象的目的
实现方式:
1.静态代理
2.动态代理
实现步骤
1.代理对象和真是对象实现相同的接口
2.实现对象 = Proxy.newInstance();
3.使用代理对象调用方法
4.增强方法
Listener
事件监听机制
事件:意见事情
事件源:事件发生的地方
监听器:一个对象
注册监听器:将事件,事件源,监听器绑定在一起。事件源发生某个事件后,执行监听器代码
ServletConextListener: 监听SevletzContext对象的创建和销毁
void ContextDestroyed(ServletContextEvent sce): ServletContext //对象被销毁前调用该方法
void ContextInitialized(ServletContextEvent sce):ServletContext //对象创建后会调用该方法
步骤
1.定义一个类,实现ServletConextListener接口
2.复写方法
3.配置
注解 直接写@WebListener
web.xml