监听器(javaweb组件之一“监听器”)

监听器(javaweb组件之一“监听器”)

1.什么是监听器

javaweb有三大组件,分别是servlet,listener 和过滤器.

其中listener就是监听器.

监听器下面主要介绍两种情况的监听器.

2.情况一,

监听器其实主要解决一个问题,那就是谁监听谁?换句话说,就是要实现一个监听接口,并且还需要注册这个监听器.

情况一的监听器是针对三大域对象来进行监听的,分别是servletContext 和request以及session.

监听分为两种情况,一种是监听域对象的生命周期,另外一种则是监听域对象的存储,替换和删除属性的变化.

两种情况的实现接口也不一样,

假如是监听生命周期的,那就需要实现一个类,继承接口ServletContextListener(只针对监听servletContext情况,不过其他两个域对象类似),要实现两个方法,分别表示ServletContext的创建和销毁

假如是监听属性变化的,实现一个类继承于ServletContextAttributeListener接口即可.

实现了接口之后,还需要注册.

在项目的web.xml文件里面定义listener标签,该标签下面有一个子标签,子标签就是填写实现接口的那个类的全名称.

3.情况二

这种类型的监听器是针对javabean的,不是针对域对象的.

而且也不需要在web.xml文件里面注册

实现方法很简单,就是在javabean的类继承接口,接口有两种,分别代表两种监听器,一种是sessionBindingListener,另外一种就是sessionAvtivationListener.下面分别介绍两种监听器

①sessionBindingListener的作用是可以使得javabean对象知道自己有没有被添加到session里面去.无论添加还是删除都会触发相对应的回调方法.

至于回调方法则是继承这个接口必须要实现的两个方法.

②sessionAvtivationListener,的作用就是可以使得javabean对象知道自己是不是跟session一起钝化或者活化.无论是钝化还是活化,都会触发对应的回调方法.

注意:

要想实现该类型的监听,不仅需要javabean继承这个接口.

另外还需要两个步骤,

1.进行相关配置,如何配置自行百度

2.javabean必须要继承持久化的接口

补充, 什么是钝化以及活化?

首先我们要知道,一个session是有最大生命周期的,到了时间就会被清除,但是还有另外一种情况

假如一个session长时间没有被使用,而且还没有到达这个最大生命周期.

我们可以有两种做法,一种是调用session的相关api,使得它失效.

另外一种就是可以将这个session做持久化操作.所谓的持久化操作就是将这个session暂时保存到硬盘里面,到了需要的时候,在调回内存里面.

其实,当tomcat关闭的时候,servletContext会被销毁,但是所有的session都会被持久化,然后重新打开tomcat’的时候就会将这些session都取回内存.

其实,我们的这个sessionAvtivationListener实现的监听效果也是类似的,只不过我们这个是不需要关闭服务器的.我们可以设置每隔一段时间就让session实现钝化以及活化.

(0)

相关推荐