Filter简单学习
Filter
-
过滤器的作用:完成通用的操作---->例如:登录验证,统一编码处理,敏感字符过滤...
-
步骤:
-
1.定义一个类实现Filter接口
-
2.复写方法
-
3.配置拦截路径---->两种方法:
-
a.注解配置
@WebFilter("/拦截的路径")
-
b.web.xml配置
<!--注册Filter--> <filter> <filter-name>TestFilter</filter-name> <filter-class>com.km.servlet.TestFilter</filter-class> </filter> <!--映射Filter--> <filter-mapping> <filter-name>TestFilter</filter-name> <url-pattern>/test</url-pattern> </filter-mapping>
-
-
-
过滤器执行流程---->首先过滤,然后放行,之后返回过滤器至放行点执行
-
过滤器生命周期方法:
- 1.init:服务器启动时创建Filter对象时会调用init方法执行一次
- 2.doFilter:每次请求的时候都会执行一次,可执行多次
- 3.destroy:服务器被正常关闭时执行一次
-
过滤器配置详解:
-
拦截路径配置:
- 具体路径配置:/index.jsp,只有访问index.jsp时过滤器会被执行
- 拦截目录:/user/* 访问 /user下的所有资源时,过滤器会被执行
- 后缀名拦截:*.jsp 访问所有jsp资源时,过滤器都会被执行
- 拦截所有资源:/* 访问所有资源时过滤器都会被执行
-
拦截方式配置:资源被访问的方式
-
注解配置---->设置dispatcherTypes属性---->
- REQUEST:默认值,浏览器直接请求资源
- FORWARD:转发访问资源
- INCLUDE:包含访问资源
- ERROR:错误跳转资源
- ASYNC:异步访问资源
-
web.xml配置
<filter-mapping> <filter-name>TestFilter</filter-name> <url-pattern>/test</url-pattern> <dispatcher>REQUEST</dispatcher> <!--配置此标签--> </filter-mapping>
-
-
-
过滤器链(配置多个过滤器)
- 执行顺序:如果有多个过滤器,逐层进入,逐层退出
- 先后顺序:
- 注解配置:按照类名的字符串比较规则比较,值小的先执行
- AFilter先于BFilter执行
- web.xml配置:先执行配置在前的filter-mapping
- 注解配置:按照类名的字符串比较规则比较,值小的先执行
-
增强对象的功能
-
设计模式:一些通用的解决固定问题的方式---->23种设计模式
-
代理模式:
-
概念---->
- 真实对象:被代理的对象
- 代理模式:代理对象代理真实对象,达到增强真实对象功能的目的
- 代理对象
-
实现方式---->
- 静态代理:有一个类文件描述代理模式
- 动态代理:在内存中形成代理类
-
实现步骤---->
-
代理对象和真实对象实现相同的接口
-
代理对象=Proxy.newProxyInstance()---->
三个参数:真实对象的classloader,真实对象的接口数组,处理器的参数---->
proxy代理对象,代理对象调用的方法,args代理对象调用方法时,传递的实际参数
-
增强方式:
- 增强参数列表
- 增强返回值类型
- 增强方法体执行逻辑
-
-
-
装饰模式:
-