什么是listener?
listener是Javaweb开发中的监听器,是用于监听web常见对象 HttpServletRequest ,HttpSession ,ServletContext监听它们的创建与销毁 属性变化 session绑定javaBean
监听步骤:
- 创建相应的监听器
- 在web.xml中注册
例子:
1、创建一个ServletContext的监听器:
这个对象是在服务器启动时创建的,在服务器关闭时销毁的。
package com.yanglin.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//实现写在这里
System.out.println("ServletContext对象创建了");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
System.out.println("ServletContext对象销毁了");
}
}
2、web.xml中注册
<listener>
<listener-class>com.yanglin.listener.MyServletContextListener</listener-class>
</listener>
Javaweb开发中常见监听器
监听域对象的创建与销毁
- 监听ServletContext创建与销毁 实现:ServletContextListener
- 监听HttpSession创建与销毁 实现HttpSessionListener
- 监听HttpServletRequest创建与销毁 实现ServletRequestListener
监听域对象的属性变化
- 监听ServletContext属性变化 ServletContextAttributeListener
- 监听HttpSession属性变化 HttpSessionAttributeListener
- 监听HttpServletRequest属性变化 ServletRequestAttributeListener
监听session绑定javaBean
- 它是用于监听javaBean对象是否绑定到了session域 HttpSessionBindingListener
- 它是用于监听javaBean对象的活化与钝化 HttpSessionActivationListener
HttpSession对象的创建与销毁
演示了Request域对象中属性变化
在java的监听机制中,它的监听器中的方法都是有参数的,参数就是事件对象,而我们可以通过事件对象直接获取事件源。
session绑定javaBean
1.javaBean对象自动感知被绑定到session中.HttpSessionBindingListener 这个接口是由javaBean实现的,并且不需要在web.xml文件中注册.但是需要让bean对象实现HttpSessionBindingListener
在jsp中
2.javabean对象可以活化或钝化到session中。
HttpSessionActivationListener如果javaBean实现了这个接口,那么当我们正常关闭服务器时,session中的javaBean对象就会被钝化到我们指定的文件中。
当下一次在启动服务器,因为我们已经将对象写入到文件中,这时就会自动将javaBean对象活化到session中。
我们还需要个context.xml文件来配置钝化时存储的文件
在meta-inf目录下创建一个context.xml文件
<Context>
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="it315"/>
</Manager>
</Context>