Filter 过滤器和 Listener 监听器
init()方法:在服务器启动后创建 Filter 对象,调用 init 方法,只执行一次,用于加载资源
doFilter()方法:每一次请求被拦截请求资源时调用,可执行多次
destory()方法:服务器正常关闭时调用 distory 方法销毁 Filter 对象,只执行一次,用于释放资源
@WebFilter("/*") //访问所有资源之前都会执行该过滤器
public class myFilter implements Filter {
/*
在服务器启动后创建 Filter 对象,调用 init 方法,只执行一次,用于加载资源
*/
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化");
}
/*
每一次请求被拦截请求资源时调用,可执行多次
*/
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("oneStar");
//放行
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("BackoneStar");
}
/*
服务器正常关闭时调用 distory 方法销毁 Filter 对象,只执行一次,用于释放资源
*/
public void destroy() {
System.out.println("销毁");
}
}
5、过滤器配置问题
【1】拦截路径配置
具体资源路径:/index.jsp ==> 只有访问 index.jsp 资源时,过滤器才会被执行
拦截目录:/user/* ==> 访问/user 下的所有资源时,过滤器都会被执行
后缀名拦截:*.jsp ==> 访问所有后缀名问 jsp 资源时,过滤器都会被执行
拦截所有资源:/* ==> 访问任何资源,过滤器都会被执行
【2】拦截方式的配置
注解配置(设置配置文件的 dispatcherTypes 属性)
REQUEST:默认值,浏览器直接请求资源
FORWARD:转发访问资源
INCLUDE:包含访问资源
ERROR:错误跳转资源
ASYNC:异步访问资源
web.xml 配置
配置<dispatcher></dispatcher>标签即可
//浏览器直接请求 index.jsp 资源时,该过滤器会被执行
//@Web 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 Filter(value = "/index.jsp",dispatcherTypes = DispatcherType.REQUEST)
//只有转发 index.jsp 资源时,该过滤器才会被执行
//@WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.FORWARD)
//浏览器直接请求 index.jsp 资源,转发 index.jsp 资源时,该过滤器会被执行
@WebFilter(value = "/index.jsp",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})
public class myFilter implements Filter {
6、过滤器链(配置多个过滤器)
【1】执行顺序
过滤器 1
过滤器 2
资源执行
过滤器 2
过滤器 1
【2】过滤器先后顺序
注解配置:按照类名的字符串比较规则进行比较,值小的先执行
eg:AFilter 和 BFilter,AFilter 先执行
web.xml:<filter-mapping>中谁定义在上面就先执行谁
二、Listener 监听器
==============
监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立 Java 开源项目【ali1024.coding.net/public/P7/Java/git】 即采取相应的行动。监听器其实就是一个实现特定接口的普通 java 程序,这个程序专门用于监听另一个 java 对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法立即被执行。比如监听在线用户的数量。
1、ServletContextListener 接口
总结
阿里伤透我心,疯狂复习刷题,终于喜提 offer 哈哈~好啦,不闲扯了
1、JAVA 面试核心知识整理(PDF):包含 JVM,JAVA 集合,JAVA 多线程并发,JAVA 基础,Spring 原理,微服务,Netty 与 RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA 算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共 30 个章节。
2、Redis 学习笔记及学习思维脑图
3、数据面试必备 20 题+数据库性能优化的 21 个最佳实践
评论