栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

监听器(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对象进行监听,是被动触发

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号