• 监听器


    监听器是监听某些对象状态变化的组件。
    被监听的对象为三个域对象:ServletRequest,HttpSession和ServletContext,分别可以监听它们自身的创建和销毁和它们对象属性的变化。
    监听域对象本身创建和销毁需要实现的接口分别为:ServletRequestListener,HttpSessionListener,ServletContextListener。需要用类实现接口,然后重写方法,其中带有created或initialized的方法名的方法为创建时要执行的方法,带有destroy的方法名的方法为销毁时要执行的方法。另外需要要在工程下的Web.xml中配置该类文件,在<listener>标签中的<listener-class>中写入该类的位置。
    监听域对象属性的变化需要实现的接口分别为:ServletRequestAttributeListener,HttpSessionAttributeListener,ServletAttributeContextListener,
    需要实现接口然后重写方法,不同之处在于它有三个方法:attributeAdded(),attributeRemoved()和attributeReplaced(),分别对应着添加属性,删除属性与更改属性,在域中setAttribute(),如果键值和之前setAttribute()的相同,则视为修改。当然,它们同样需要在Web.xml中配置路径。
    Session域对象感知监听器,它可以监视Session域中对象的状态,并做出回应。它总共可以监视四种状态,即绑定状态,解绑状态,钝化状态,活化状态。分别代表了对象被加入到Session域,对象被从Session域中移除,对象被持久化到了磁盘中,对象从磁盘中回到了Session的内存中。
    绑定与解绑需要实现的接口为HttpSessionBindingListener,钝化与活化需要实现的接口为HttpSessionActivationListener和Serializable,可以通过context.xml(在META-INF下创建)来修改钝化时间,默认为1分钟。
    下面是个实现监视Session域对象的钝化和活化的小例子:

    package com.java.demo02;
    
    import java.io.Serializable;
    
    import javax.servlet.http.HttpSessionActivationListener;
    import javax.servlet.http.HttpSessionEvent;
    
    public class User implements HttpSessionActivationListener,Serializable{
    		private String name;
    		private int age;
    		public String getName() {
    			return name;
    		}
    		public void setName(String name) {
    			this.name = name;
    		}
    		public int getAge() {
    			return age;
    		}
    		public void setAge(int age) {
    			this.age = age;
    		}
    		public User(String name, int age) {
    			super();
    			this.name = name;
    			this.age = age;
    		}
    		public User() {
    			super();
    		}
    		//活化
    		public void sessionDidActivate(HttpSessionEvent arg0) {
    			 System.out.println("user活化了");
    			
    		}
    		//钝化
    		public void sessionWillPassivate(HttpSessionEvent arg0) {
    			 System.out.println("user钝化了");
    			
    		}
    		@Override
    		public String toString() {
    			return "User [name=" + name + ", age=" + age + "]";
    		}
    		
    }
    

      

  • 相关阅读:
    git代码提交
    bootstrap的用法、bootstrap图标
    HTML 5 Web 存储(客户端存储数据)
    require.js
    WebStrom的使用技巧
    event事件
    $().each 和 $each( )的区别
    js基础字符串
    if return的用法 逻辑运算 switch for break等用法
    date-id自定义属性
  • 原文地址:https://www.cnblogs.com/zhangrui0328/p/9343450.html
Copyright © 2020-2023  润新知