监听器之application监听

本文详细介绍了Java Servlet中的应用监听器,包括ServletContextListener和ServletContextAttributeListener。监听器用于在特定事件发生时自动执行处理,如初始化和销毁上下文,以及添加、替换和删除属性。通过配置和实例,展示了如何在web.xml中设置监听器,并通过JSP页面操作属性来观察监听器的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监听实际上指的是对整个Web中需要的位置上的操作进行的一种监听而已,当发生了某些操作之中会自动的执行一些处理功能。那么怎么进行监听呢?
在监听器里面实际上主要都是针对于属性的监听(request、session、application)。
对application监听:
Application对应的类型是:javax.servlet.ServletContext,指的是整个整个servlet的上下文,即:服务器的监听。对于服务器的监听,提供有两个使用的接口,分别为:
一、对上下文的状态监听:ServletContextListener;
它又有两个操作,分别为:
初始化:public void contextInitialized(ServletContextEvent sce);
销毁: public void contextDestroyed(ServletContextEvent sce);
它们的方法里面都有一个事件的对象:ServletContextEvent,这个类里提供了如下操作:
取得上下文对象:public ServletContext getServletContext();
例:配置一个简单的监听:

package com.lj.zx;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
//ServletContextListener 表示针对整个容器的启动与关闭监听
public class MyListener implements ServletContextListener {
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("销毁----" +arg0.getServletContext().getRealPath("/"));
	}

	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("启动+++++" +arg0.getServletContext().getRealPath("/"));
	}
}

并在web配置,代码十分简单,如下:

  <listener>
    <listener-class>com.lj.zx.MyListener</listener-class>
  </listener>

将项目部署到tomact中,结果如下:
在这里插入图片描述
二、对上下文的属性监听:ServletContextAttributeListener:
1.增加属性:public void attributeAdded(ServletContextAttributeEvent scab);
2.替换属性:public void attributeReplaced(ServletContextAttributeEvent scab);
3.删除属性:public void attributeRemoved(ServletContextAttributeEvent scab);
这三个方法都会有一个事件对象:ServletContextAttributeEvent,这个类有如下方法:
① 取得操作属性的名字:public String getName();
② 取得操作属性的内容:public Object getValue();
为了让监听器起作用,在jsp或者Servlet页面进行属性的设置与删除,例:

package com.lj.zx;

import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletContextAttributeEvent;

public class MyListener implements ServletContextAttributeListener {

	public void attributeAdded(ServletContextAttributeEvent arg0) {
		System.out.println("增加属性 name=" +arg0.getName() + ",value= "+arg0.getValue());
	}

	public void attributeRemoved(ServletContextAttributeEvent arg0) {
		System.out.println("删除属性 name=" +arg0.getName() + ",value= "+arg0.getValue());
	}

	public void attributeReplaced(ServletContextAttributeEvent arg0) {
		System.out.println("替换属性 name=" +arg0.getName() + ",value= "+arg0.getValue());
	}

}

为了让监听器起作用,Jsp页面的简单代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% 
application.setAttribute("msg", new java.util.Date());
%>

部署该项目,启动,在浏览器上打开,结果如下:
在这里插入图片描述
再次刷新页面,则出现替换属性,结果如下:
在这里插入图片描述
更改jsp页面代码为:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<% 
application.removeAttribute("msg");
%>

出现删除属性,如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值