【Listener】域对象(request、session、application)监听器

域对象创建和销毁的事件监听器就是用来监听ServletContext、HttpSession和HttpServletRequest这三个对象的创建和销毁事件的监听器。

ServletContextListener

创建ServletContextListener监听器:

  • 1、创建一个普通Java类,实现ServletContextListener接口
  • 2、(eclipse)直接创建一个Listener,选择实现ServletContextListener接口

配置web.xml:

  • 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
  • 2、如果是创建的Java类然后实现的ServletContextListener接口,则需要配置web.xml:
    <listener>
    	<listener-class>ServletContextListener实现类的路径</listener-class>
    </listener>
    

在监听器中实现ServletContextListener接口的两个抽象方法:

  • 1、contextInitialized():Web项目发布时创建与该项目对应的ServletContext对象的同时自动执行该方法
  • 2、contextDestroyed():服务器关闭时销毁每个Web项目所对应的ServletContext对象的同时自动执行该方法

例:

package cn.jingpengchong.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ApplicationListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent arg0)  { 
         System.out.println("ApplicationListener 被销毁");
    }
    public void contextInitialized(ServletContextEvent arg0)  { 
    	System.out.println("ApplicationListener 被创建");
    }
}

启动服务器时在控制台输出下面的内容:
在这里插入图片描述
启动服务器时在控制台输出下面的内容:
在这里插入图片描述

HttpSessionListener

创建HttpSessionListener监听器:

  • 1、创建一个普通Java类,实现HttpSessionListener接口
  • 2、(eclipse)直接创建一个Listener,选择实现HttpSessionListener接口

配置web.xml:

  • 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
  • 2、如果是创建的Java类然后实现的HttpSessionListener接口,则需要配置web.xml:
    <listener>
    	<listener-class>HttpSessionListener实现类的路径</listener-class>
    </listener>
    

在监听器中实现HttpSessionListener接口的两个抽象方法:

  • 1、sessionCreated():HttpSession对象创建时自动执行该方法
  • 2、sessionDestroyed():HttpSession对象销毁时自动执行该方法

例:

package cn.jingpengchong.listener;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class SessionListener implements HttpSessionListener {

    public void sessionCreated(HttpSessionEvent arg0)  { 
    	System.out.println("SessionListener 被创建");
    }
    public void sessionDestroyed(HttpSessionEvent arg0)  { 
    	System.out.println("SessionListener 被销毁");
    }
}

发送请求创建HttpSession对象时在控制台输出“SessionListener 被创建”;
HttpSession对象失效时或者执行“session.invalidate();”后在控制台输出“SessionListener 被销毁”。

ServletRequestListener

创建ServletRequestListener监听器:

  • 1、创建一个普通Java类,实现ServletRequestListener接口
  • 2、(eclipse)直接创建一个Listener,选择实现ServletRequestListener接口

配置web.xml:

  • 1、如果直接创建的Listener,则web.xml会自动配置该监听器的url路径
  • 2、如果是创建的Java类然后实现的ServletRequestListener接口,则需要配置web.xml:
    <listener>
    	<listener-class>ServletRequestListener实现类的路径</listener-class>
    </listener>
    

在监听器中实现ServletRequestListener接口的两个抽象方法:

  • 1、requestInitialized():每次发送请求时执行该方法
  • 2、requestDestroyed():每次请求完毕执行该方法

例:

package cn.jingpengchong.listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

public class RequestListener implements ServletRequestListener {

    public void requestDestroyed(ServletRequestEvent arg0)  { 
    	System.out.println("RequestListener 被销毁");
    }
    public void requestInitialized(ServletRequestEvent arg0)  { 
    	System.out.println("RequestListener 被创建");
    }
}

每次发送请求后都会在控制台依次打印“RequestListener 被创建”、“RequestListener 被销毁”,前者是在发送请求时打印的,后者是在请求完毕后打印的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值