监听器(Listener)的入门详解和使用方法

监听器(Listener)的入门详解和使用方法,第1张

监听器(Listener)的入门详解和使用方法 监听器的作用
  • Listener的作用对Web应用对象的行为进行监控。
  • 通过Listener监听自动触发指定功能代码。

这里Web应用对象通常指这三种:
ServletContext–对全局ServletContext及其属性进行监听
HttpSession–对用户会话及其属性 *** 作进行监听
ServletRequest–对请求以及属性 *** 作进行监听

在这些属性进行修改时,就会被监听器捕获,从而执行相应的功能代码。

开发监听器的三要素
  • 实现XxxLsitener接口,不同接口对应不同监听对象
  • 实现每个接口中独有的方法,实现触发监听的后续 *** 作
  • 在web.xml中配置标签使监听器生效
实例 *** 作

在这里我们实际 *** 作一下(开发工具使用的Eclipse),首先创建一个Web工程,工程名为first-listener,在src文件夹中创建一个包,包名为com.sias.listener,在该包中创建一个类,类名为FirstListener。


上图为我们的工程结构图,接下来我们将在FirstListener类中实现我们第一个监听器。

package com.imooc.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
//导入ServletContextListener监听器接口
public class FirstListener implements ServletContextListener{
	//重写监听器初始化方法
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("ServletContext已初始化");
	}
	//重写监听器销毁方法
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("ServletContext已销毁");
    }

}

此时我们监听器已经完成,接下来将监听器配置使用。

监听器的配置方法
  1. 监听器web.xml配置
 
      包名.类名 
 

2.监听器注释

@WebListener

个人建议对于像监听器这种全局变量建议在web.xml文件中配置。

实例 *** 作
  1. 我们首先在web.xml文件中配置。


  first-listener
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
    com.sias.listener.FirstListener
  

这时候我们就配置成功了。

接下来我们启动程序。接下来我们观察控制台。

在这里我们可以看到在启动Tomcat服务器时,自动调用了监听器初始化方法contextInitialized(),在控制台打印出“ServletContext已初始化”。
在这里说明一下,ServletContext全局对象在应用启动时会自动初始化,而我们的监听器捕获到了ServletContext的初始化 *** 作,所以就自动调用了监听器初始化方法,所以在控制台就输出了“ServletContext已初始化”。

接下来我们关闭服务器,观察控制塔台,发现调用了监听器的销毁方法输出“ServletContext已销毁”。

2.接下来我们尝试用注释的方法配置监听器。
首先我们先要把web.xml中配置监听器的语句给注释掉,接下来,打开FirstListener类在里面添加 @WebListener注释。

package com.sias.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
//监听器注释
@WebListener
public class FirstListener implements ServletContextListener{
	//监听器初始化方法
	@Override
	public void contextInitialized(ServletContextEvent sce) {
		System.out.println("ServletContext已初始化");
	}
	//监听器销毁方法
	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		System.out.println("ServletContext已销毁");
    }
}

我们再次启动程序,发现控制台输出的语句跟配置web.xml的输出语句一模一样,这说明我们配置成功了。

在这里多提一嘴,过滤器和监听器的区别:
过滤器(Filter)的职责是对URL进行过滤拦截,是主动的执行
监听器(Listener)的职责是对Web对象进行监听,是被动触发

注:本篇文章仅个人见解,若有错误,欢迎指正!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5671914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存