Filter:过滤器
概念:
生活中的过滤器:净水器,空气净化器
web中的过滤器:当访问服务器的资源时,过滤器蒋请求拦截下来,完成一些特殊的功能
过滤器的作用:
一般用于完成通用的操作:如登录验证,判断是否登录;统一编码处理.敏感字符过滤...
快速入门:
步骤:
1.定义一个类(xxxFilter),实现接口Filter(javax.servlet)
放行:filterChain.doFilter(servletRequest,servletResponse)
2.重写方法
3.配置拦截路径
1.web.xml配置
2.注解配置
在类上添加@WebFilter("/*")访问所有资源之前,都会执行该过滤器
过滤器细节:
1.web.xml配置
<filter
<filter-name
<filter-class
<filter-mapping
<filter-name
//拦截路径
<url-pattern
2.过滤器执行流程
过滤器在服务器启动时创建
1.拦截前
2.放行
3.放行后
请求和响应是两条线:浏览器发送请求 --> 拦截 --> 增强请求--> 服务器响应 -->拦截 -->增强响应
3.生命周期
1.init
在服务器启动时执行,只执行一次
2.doFilter
在浏览器访问时执行,访问一次执行一次,执行多次
3.destroy
在服务器正常关闭前执行,只执行一次
4.过滤器配置详解
拦截路径配置
1.具体资源路径-->/路径 : 只有访问设置的路径时,过滤器才会执行
2.拦截目录-->/目录名/* : 访问设置的所有资源时,过滤器都会被执行
3.后缀名拦截(后缀名前没有/)-->xx.后缀名:访问所有含有此后缀名时,过滤器被执行
**4.拦截所有-->/* : 访问所有资源时,过滤器都会被执行
拦截方式的配置(了解)
概念:资源被访问的方式
方式:
1.注解配置
设置dispatcherType属性
request 默认值,浏览器直接请求资源/重定向
forward 转发访问资源
include 包含访问资源
error 错误跳转资源
async 异步访问资源
2.web.xml配置
5.过滤器链(多个过滤器)
执行顺序:如果有两个过滤器-->过滤器1和过滤器2
1过滤器1
2.过滤器2
3.资源执行
4.过滤器2
5.过滤器1
过滤器先后顺序(优先级)
1.注解配置
按照类名的字符串规则比较,值小的先执行
如:AFilter 和 BFilter ,A Filter 先执行
2.web.xml配置
<filter-mapping>谁定义在上边,谁先执行
****案例****
1.登录验证
2. 敏感词汇过滤
Listener:监听器(了解)
对方法进行增强
装饰者模式
代理模式
继承
代理模式:一些通用的解决固定问题的方式
增强对象功能
概念:
1.真实对象:被代理的对象
2.代理对象:
3.代理模式:代理对象去代理真实对象去达到增强真实对象的目的
实现方式:
1.静态代理:有一个类文件描述代理模式
***2.动态代理:在内存中形成代理类-->框架底层原理
步骤:
1.代理对象和真实对象实现相同的接口
2.代理对象=Proxy.newProxyInstance();
三个参数:
1.类加载器:真实对象.getClass().getClassLoader()
2.接口数组:真实对象.getClass().getInterfaces()
3.处理器:new InvocationHandler()
@override
public Object invoke(三个参数)
实现方法中的三个参数
代理逻辑编写的方法:代理对象调用的所有方法都会触发该方法执行
参数:
1.proxy:代理对象
2.method:代理对象调用的方法,被封装为的对象
3.args:代理对象代用方法时,传递的实际参数
3.使用代理对象调用方法
4.增强方法
对方法进行增强:
1.继承
2.装饰者模式(提供接口)
1.类名以Wrapper结尾,该类构造需要传入对象
2.原本类和实现类都需要实现共同的接口
3.增强类需要持有原本类的对象
3.代理模式(提供接口)
静态代理
动态代理
在运行时动态创建代理对象
Ctrl +alt + 空格补全最后一个参数
监听器:观察者设计模式
概述:
web的三大组件之一
事件监听机制:
事件:一件事情
事件源:事件发生的地方
监听器:一个对象
注册监听:将事件 事件源 监听器绑定在一起,当事件源发生某个事件后,执行监听器代码
ServletContextListener监听servletContext对象的创建和销毁
接口
void contextDestroyed :servletContext对象被销毁前会调用该方法
void contextInitialized:servletContext对象创建后调用该方法
步骤:
1.定义一个类,实现servletContextListener接口
2.复写接口中contextInitialized和contextDestroyed的方法
3.配置监听器
1.web.xml(listener)
2.注解
@weblistener,不需指定路径
|
|