Listener监听器

什么是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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值