Javaweb事件监听
HttpServletRequest对象
ServletContext对象
HttpSession对象
监听的是绑定的对象的变化:
1.对象的创建与销毁
2.域中保存的值得变化
注意: 使用监听器 需要在web.xml中配置
<!-- 注册监听器 -->
<listener>
<listener-class>com.lanou3g.MyServletContextListener</listener-class>
</listener>
监听对象的创建和销毁
ServletContextListener
HttpSessionListener
ServletRequestListener
--- 访问网址 就创建Request对象
访问结束 该对象消失
ServletContextListener接口:
实现contextInitialized方法--- 初始化方法 启动项牧师就会自动初始化
contextDestroyed 销毁方法 --- stop项目时销毁
HttpSessionListener接口:
实现sessionCreated 创建
sessionDestroyed 销毁
ServletRequestListener接口:
attributeAdded 添加绑定事件
attributeRemoved 删除绑定事件
attributeReplaced 替换绑定
监听域对象中属性值的变化
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
监听session中绑定了自定义对象的值的变化
HttpSessionBindingListener
注意: 实现该接口 不用去web.xml中配置
注意: 该接口需要被绑定的对象的类(被添加到session域中的类) 来实现该接口
实现valueBound方法 绑定对象
实现valueUnbound方法 解除绑定
定时器
作用: 定时执行任务
Timer timer = new Timer();
// 参数1: task接口的实现类的对象
// 参数2: 延迟多少毫秒执行
// 参数3: 间隔多少毫秒执行一次
timer.schedule(new TimerTask() {
@Override
public void run() {
// 执行的任务
Date date = new Date();
System.out.println(date.toLocaleString());
}
}, 2000, 5000);
需求:
* 定时销毁session(5秒 销毁一次)
* 思路:
* 1.把所有创建出来的session保存起来---保存在哪?
* ServletContext (那个类都能获取到)
* 把所有session对象放数组里 把数组保存到域中
* ---什么时候创建数组?
* 当ServletContext对象初始化的时候 创建数组
* 通过监听类--初始化监听方法时--触发创建一个数组
* ---什么时候把session对象放到数组中
* 当Session对象创建时 把对象方数组中
* 2.遍历所有保存起来的session对象
* 查看session 5秒没有用 就让该session失效
* 获取最后session没有使用的时间
* 1970.1.1到没使用时间的毫秒数
* System.currentTimeMillis()
* -
* long getLastAccessedTime() == 5000;