zoukankan      html  css  js  c++  java
  • java中的监听事件

    java监听器实现的类
    1.ServletContextListener:对servlet上下文的创建和销毁监听
    2.ServletContextAttributeListener:监听servlet上下文属性的添加、删除和替换
    3.HTTPSessionListener:对Session的创建和销毁监听
          session的销毁有两种情况:1). session超时(可以在web.xml中通过<session-config>/<session-timeout>标签配置超时         时间);2). 通过调用session对象的invalidate()方法使session失效。
    4.HttpSessionAttributeListener:对Session对象中属性的添加、删除和替换进行监听
    5.ServletRequestListener:对请求对象的初始化和销毁进行监听。
    6.ServletRequestAttributeListener:对请求对象属性的添加、删除和替换进行监听

    上边6个类是java给我提供的监听的类,在使用时之间实现其接口,以及接口中方法即可

    public class OnlinePerListener implements HttpSessionListener{
    
    	private int userCounter = 0;
    	@Override
    	public void sessionCreated(HttpSessionEvent session) {
    		userCounter++;
    		session.getSession().setAttribute("userCounter", userCounter);
    	}
    
    	@Override
    	public void sessionDestroyed(HttpSessionEvent session) {
    		userCounter--;
    		session.getSession().setAttribute("userCounter", userCounter);
    	}
    
    }
    


    PS:无论是自己写的监听事件,还是使用java提供的监听,都需要在web.xml中对其进行配置

    <listener>
      	<listener-class>com.JavaListener.TestListener</listener-class>
    </listener>


    下边写自己实现监听器:
    监听器设计主要涉及三个组件
    1.事件源:即事件发生的源头,例如一条狗,他可以发出动作。
    2.事件对象:是对事件源的实例化,进而可以设置其相应的属性
    3.事件监听器:用来监听事件源发出的动作。
    /*
     * 创建事件源
     */
    public class Dog {
    	//定义一个监听器对象,用来接收传递进来的事件监听器
    	private DogListener listener;
    	
    	public void registListener(DogListener dogListener){
    		this.listener=dogListener;
    	}
    	
    	public void shout(){
    		if(listener!=null){
    			Even even = new Even(this);
    			this.listener.doshout(even);
    		}
    		System.out.println("汪汪汪................");
    	}
    	
    	public void watch(){
    		if(listener!=null){
    			Even even = new Even(this);
    			this.listener.dowatch(even);
    		}
    		System.out.println("狗会看门..............");
    	}
    }
    
    public class TestListener implements DogListener{
    	public static void main(String[] args) {
    		Dog dog = new Dog();
    		dog.registListener(new TestListener());
    		dog.shout();
    		dog.watch();
    	}
    
    	@Override
    	public void doshout(Even even) {
    		//拿到事件源,可以进行操作
    		Dog dog = even.getDog();
    		
    		System.out.println("叫之前的动作");
    	}
    
    	@Override
    	public void dowatch(Even even) {
    		System.out.println("看门之前的动作");
    		
    	}
    }
    



  • 相关阅读:
    双击返回 退出程序
    读取InputStream 中的内容
    wsgi服务器
    python 中的GIL
    json
    __getattr__
    错误类型
    __slot__用法
    获取属性以及基本方法
    linux IO
  • 原文地址:https://www.cnblogs.com/tonghao/p/8506017.html
Copyright © 2011-2022 走看看