1、web.xml配置
2、过滤器执行流程
3、过滤器生命周期
4、过滤器配置详情
5、过滤器链(配置多个过滤器)
1、web.xml配置
url-pattern设置拦截路径。
2、过滤器执行流程:
过滤器 - 服务器-过滤器
3、执行流程:
init方法在服务启动后,会创建filter对象,然后调用init方法。
destroy方法在服务器关闭后,filter对象呗被销毁,如果服务器是正常关闭,则会执行destroy方法。
init和destroy都只会执行一次。doFilter方法可能会执行多次。
init方法一般用于加载资源,destroy用来是放资源。
过滤器配置详解:
**拦截路径配置配置**
1、具体访问路径: /index.jsp 只有访问 index.jsp时才会被执行
2、拦截目录: /user/* :访问/user下的所有资源时,过滤器都会被执行。
3、后缀名拦截:*jsp 访问所有后缀名为jsp资源时,过滤器都会被执行
4、拦截所有资源 : /* 访问所有资源,过滤器都将被执行。
拦截方式配置:资源被访问的方式
-
注解配置:
设置dispatcherType:
REQUEST:默认值,浏览器直接请求资源。
FORWARD:转发访问资源。
INCLUDE:包含访问目录
ERROE:错误跳转资源
ASYNC:异步访问资源 -
web.xml配置
5、过滤器链
过滤器先后顺序问题:注解配置,按照类名字符串比较规则值小的先执行,例如AFilter比BFilter先执行。web.xml配置谁定义在上边谁先执行。
代理模式:
概念:
真实对象:被代理的对象
代理对象:
代理模式:代理对象代理真实对象,达到增强真实对象功能的目的。
静态代理:有一个类文件来描述代理模式
动态代理:在内存中形成代理类。
动态代理实现步骤:
1、代理对象和真实对象实现相同的接口。
2、Proxy.newProxyInstance获取一个代理对象。
3、使用代理对象来调用方法。
4、增强方法。
增强方式:
1、增强参数列表
2、增强返回值
3、增强方法逻辑
web目录下资源访问
String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
System.out.println(b);
WEB-INF目录下的资源访问
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
System.out.println(c);
src目录下的资源访问
String a = context.getRealPath("/WEB-INF/classes/a.txt");
System.out.println(a);
Listener:监听器
事件监听机制:
事件:一件事情
事件源:事件发生的地方
监听器:一个对象
注册监听:将事件、事件源、监听器绑定在一起,当事件源上发生某个事件后,执行监听器代码。
使用步骤:
1、实现监听器接口
2、复写方法
3、配置文件(web.xml配置和注释配置)
ServletContextListener对象一般用来加载资源文件。