文章目录
监听器自定义监听器过滤器与拦截器监听器
略,不怎么使用了。
见名知意,比如你上课玩手机,亲爱的班主任静悄悄地出现在你身后。你就是“被监听的对象”,班主任就”监听者“,你因为玩手机触发了这个事件,导致你班主任来“慰问”你。
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。利用观察者设计模式就可以定义实现监听器了。
Tomcat提供了三个对象的监听器:
分别监听对象的创建和销毁,对象属性的变化,以及监听httpsession中对象的绑定和解绑定。随着web应用的启动而启动,销毁而销毁,只初始化一次。
ServletContextListenerHttpSessionListenerServletRequestListener
有没有感觉和动态代理有点联系???
自定义监听器
被监听者
public class Student {//插个眼,监听它private StudentListener studentListener;public StudentListener getStudentListener() {return studentListener;}public void setStudentListener(StudentListener studentListener) {this.studentListener = studentListener;}//监听哪些方面public void music(){System.out.println("听歌");studentListener.music(new StudentEnvent());}public void play(){System.out.println("玩游戏");studentListener.play(new StudentEnvent());}}
让监听对象与被监听对象产生联系
public class StudentEnvent {private Student student;public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}@Overridepublic String toString() {return "StudentEnvent{" +"student=" + student +'}';}}
监听接口
public interface StudentListener {void music(StudentEnvent studentEnvent);void play(StudentEnvent studentEnvent);}
测试
import org.junit.Test;public class StudentTest {@Testpublic void test1(){Student student = new Student();//初始化监听者(匿名内部类)student.setStudentListener(new StudentListener() {@Overridepublic void music(StudentEnvent studentEnvent) {System.out.println("监听student听音乐");}@Overridepublic void play(StudentEnvent studentEnvent) {System.out.println("监听student玩游戏");}});student.music();student.play();}}
过滤器与拦截器
话说我想直接从word中复制表格过来,怎么操作啊,苦恼😤