13.JavaWeb基础 监听器

本文详细介绍了在Web开发中使用监听器进行监听application、session、request等操作的方法及其实现过程,包括如何实现监听事件、配置监听器以及通过测试代码验证监听效果。

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





   监听器俗称监听Servlet。主要的功能是负责监听Web的各种操作,当相关的事件触发

之后将产生事件,并对此事件进行处理。在Web中可以对request、session、application

属性进行监听操作。








一.对application监听


ApplicationListener:



package com.zyy.listener;

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

public class ApplicationListener implements ServletContextListener {

	public void contextDestroyed(ServletContextEvent event) {

		System.out.println("*************************Application销毁:"
				+ event.getServletContext().getContextPath());

	}

	public void contextInitialized(ServletContextEvent event) {

		System.out.println("***************************Application初始化:"
				+ event.getServletContext().getContextPath());

	}

}


web.xml:


  <listener>
  
  	<listener-class>com.zyy.listener.ApplicationListener</listener-class>
  
  </listener>












ApplicationAttributeListener:



package com.zyy.listener;

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

public class ApplicationAttributeListener implements
		ServletContextAttributeListener {

	public void attributeAdded(ServletContextAttributeEvent event) {

		System.out.println("Application增加属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

	public void attributeRemoved(ServletContextAttributeEvent event) {

		System.out.println("Application删除属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

	public void attributeReplaced(ServletContextAttributeEvent event) {

		System.out.println("Application更新属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

}



web.xml:

  <listener>
  
  	<listener-class>com.zyy.listener.ApplicationAttributeListener</listener-class>
  
  </listener>



测试代码:


<%

	this.getServletContext().setAttribute("CaMnter", "Save you from anything 07") ;
        this.getServletContext().setAttribute("CaMnter", "Save you from anything 07 forever") ;
	this.getServletContext().removeAttribute("CaMnter") ;

%>



刷新好多次页面得到如下:











二.对session监听



SessionListener:


package com.zyy.listener;

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

public class SessionListener implements HttpSessionListener {

	public void sessionCreated(HttpSessionEvent event) {

		System.out.println("***** Session创建  id:" + event.getSession().getId());

	}

	public void sessionDestroyed(HttpSessionEvent event) {

		System.out.println("***** Session摧毁  id:" + event.getSession().getId());

	}

}



web.xml:

  <listener>
  
  	<listener-class>com.zyy.listener.SessionListener</listener-class>
  
  </listener>


测试代码:


<%

	session.invalidate();

%>



刷新好多次页面得到如下:








SessionAttributeListener:


package com.zyy.listener;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class SessionAttributeListener implements HttpSessionAttributeListener {

	public void attributeAdded(HttpSessionBindingEvent event) {

		System.out.println("Session增加属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

	public void attributeRemoved(HttpSessionBindingEvent event) {

		System.out.println("Session删除属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

	public void attributeReplaced(HttpSessionBindingEvent event) {

		System.out.println("Session更新属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

}



web.xml:

  <listener>
  
  	<listener-class>com.zyy.listener.SessionAttributeListener</listener-class>
  
  </listener>



测试代码:


<%

	session.setAttribute("CaMnter", "Save you from anything 07") ;
	session.removeAttribute("CaMnter");

%>



刷新好多次页面得到如下:












三.对request监听



RequestListener:


package com.zyy.listener;

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

public class RequestListener implements ServletRequestListener {

	public void requestDestroyed(ServletRequestEvent event) {

		System.out.println("Request 销毁:"
				+ event.getServletRequest().getRemoteAddr()
				+ event.getServletContext().getContextPath());

	}

	public void requestInitialized(ServletRequestEvent event) {

		System.out.println("Request 初始化:"
				+ event.getServletRequest().getRemoteAddr()
				+ event.getServletContext().getContextPath());

	}

}



web.xml:

  <listener>
  
  	<listener-class>com.zyy.listener.RequestListener</listener-class>
  
  </listener>




这个不需要测试代码,发布项目后,连接到即可。比如(http://127.0.0.1:8080/Listener)。


然后多次刷新后得到:









RequestAttributeListener:

package com.zyy.listener;

import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;

public class RequestAttributeListener implements
		ServletRequestAttributeListener {

	public void attributeAdded(ServletRequestAttributeEvent event) {

		System.out.println("Request增加属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

	public void attributeRemoved(ServletRequestAttributeEvent event) {

		System.out.println("Request删除属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

	public void attributeReplaced(ServletRequestAttributeEvent event) {

		System.out.println("Request更新属性:" + " name = " + event.getName()
				+ " ,value = " + event.getValue());

	}

}



web.xml:

  <listener>
  
  	<listener-class>com.zyy.listener.RequestAttributeListener</listener-class>
  
  </listener>



测试代码:


<%

	request.setAttribute("CaMnter", "Save you from anything 07") ;
	request.setAttribute("CaMnter", "Save you from anything 07 forever") ;
	request.removeAttribute("CaMnter") ;

%>



















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值