标签:XML text code validate new class stat int etc
ServletContextListener:监听ServletContext对象的创建和销毁。
HttpSessionListener:监听HttpSession对象的创建和销毁。
创建:第一次调用request.getSession()时。
销毁:1、主动调用invalidate()方法
2、超时
ServletRequestListener:监听ServletRequest对象的创建和销毁。
2.2监听ServletContext、HttpSession、ServletRequest对象中域变化(新来的,替换的,删除的)的监听器。
ServletContextAttributeListener:
HttpSessionAttributeListener:
ServletRequestAttributeListener:
2.3感知型监听器:谁实现了这些接口,谁就能感知自己被怎么着了。
这样的监听器不须要注冊。
HttpSessionActivationListener:感知自己何时随着HttpSession对象钝化和活化
HttpSessionBindingListener:感知自己何时被HttpSession对象绑了(绑在域中)和解绑了。
编写步骤:
1、编写一个类实现某个监听器接口
2、在web.xml中注冊监听器
<listener>
<listener-class>cn.usst.listener.ServletContextDemoListener</listener-class>
</listener>
三、观察者设计模式设计一个程序
//事件源 public class Student implements Serializable{ private String name; private StudentListener listener; public Student(String name){//注入:通过构造方法 this.name = name; } public String getName() { return name; } public void eat(){ if(listener!=null){ listener.preEat(new StudentEvent(this)); } System.out.println("開始吃"); } public void study(){ if(listener!=null){ listener.preStudy(new StudentEvent(this)); } System.out.println("開始学"); } }
public class StudentEvent { private Object source; public StudentEvent(Object source){ this.source = source; } public Object getSource() {//获取事件源 return source; } }
public interface StudentListener { void preEat(StudentEvent e);//监听吃 void preStudy(StudentEvent e);//监听学 }
public static void main(String[] args) { Student s = new Student("葛付以"); //注冊监听器 s.addStudentListener(new StudentListener() { public void preStudy(StudentEvent e) { Student ss = (Student) e.getSource(); System.out.println(ss.getName()+"喝杯奶吧"); } public void preEat(StudentEvent e) { Student ss = (Student) e.getSource(); System.out.println(ss.getName()+"慢慢吃"); } }); s.eat(); s.study(); }
标签:XML text code validate new class stat int etc
原文地址:http://www.cnblogs.com/cxchanpin/p/7217140.html