Java web----监听器

1 JavaWeb监听器概述

在JavaWeb被监听的事件源为:ServletContext、HttpSession、ServletRequest,即三大域对象。

  • 监听域对象“创建”与“销毁”的监听器;
  • 监听域对象“操作域属性”的监听器;
  • 监听HttpSession的监听器。

2 创建与销毁监听器

创建与销毁监听器一共有三个:

ServletContextListener:Tomcat启动和关闭时调用下面两个方法

  • public void contextInitialized(ServletContextEvent evt):ServletContext对象被创建后调用;
  • public void contextDestroyed(ServletContextEvent evt):ServletContext对象被销毁前调用;

HttpSessionListener:开始会话和结束会话时调用下面两个方法

  • public void sessionCreated(HttpSessionEvent evt):HttpSession对象被创建后调用;
  • public void sessionDestroyed(HttpSessionEvent evt):HttpSession对象被销毁前调用;

ServletRequestListener:开始请求和结束请求时调用下面两个方法

  • public void requestInitiallized(ServletRequestEvent evt):ServletRequest对象被创建后调用;
  • public void requestDestroyed(ServletRequestEvent evt):ServletRequest对象被销毁前调用。

3 事件对象

ServletContextEvent:ServletContextgetServletContext();

HttpSeessionEvent:HttpSessiongetSession();

ServletRequestEvent:

  • ServletRequest getServletRequest()
  • ServletContext getServletContext()

编写测试例子:

  • 编写MyServletContextListener类,实现ServletContextListener接口;
  • 在web.xml文件中部署监听器;
  • 为了看到session销毁的效果,在web.xml文件中设置session失效时间为1分钟;

/*
 * ServletContextListener实现类
 * contextDestroyed() -- 在ServletContext对象被销毁前调用
 * contextInitialized() --  -- 在ServletContext对象被创建后调用
 * ServletContextEvent -- 事件类对象
 *     该类有getServletContext(),用来获取ServletContext对象,即获取事件源对象
 */
public class MyServletContextListener implements ServletContextListener {
	public void contextDestroyed(ServletContextEvent evt) {
		System.out.println("销毁ServletContext对象");
	}

	public void contextInitialized(ServletContextEvent evt) {
		System.out.println("创建ServletContext对象");
	}
}

/*
 * HttpSessionListener实现类
 * sessionCreated() -- 在HttpSession对象被创建后被调用
 * sessionDestroyed() --  -- 在HttpSession对象被销毁前调用
 * HttpSessionEvent -- 事件类对象
 *     该类有getSession(),用来获取当前HttpSession对象,即获取事件源对象
 */
public class MyHttpSessionListener implements HttpSessionListener {
	public void sessionCreated(HttpSessionEvent evt) {
		System.out.println("创建session对象");
	}

	public void sessionDestroyed(HttpSessionEvent evt) {
		System.out.println("销毁session对象");
	}
}

/*
 * ServletRequestListener实现类
 * requestDestroyed() -- 在ServletRequest对象被销毁前调用
 * requestInitialized() -- 在ServletRequest对象被创建后调用
 * ServletRequestEvent -- 事件类对象
 *     该类有getServletContext(),用来获取ServletContext对象
 *     该类有getServletRequest(),用来获取当前ServletRequest对象,即事件源对象
 */
public class MyServletRequestListener implements ServletRequestListener {
	public void requestDestroyed(ServletRequestEvent evt) {
		System.out.println("销毁request对象");
	}

	public void requestInitialized(ServletRequestEvent evt) {
		System.out.println("创建request对象");
	}
}

<listener>
<listener-class>cn.itcast.listener.MyServletContextListener</listener-class>
</listener>
<listener>
<listener-class>cn.itcast.listener.MyHttpSessionListener</listener-class>
</listener>
<listener>
<listener-class>cn.itcast.listener.MyServletRequestListener</listener-class>
</listener>
<session-config>
 <session-timeout>1</session-timeout>
</session-config>

4 操作域属性的监听器

当对域属性进行增、删、改时,执行的监听器一共有三个:

ServletContextAttributeListener:在ServletC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值