servlet几个监听器

servlet中的监听器分类:

按监听的对象划分
1.用于监听应用程序环境对象(ServletContext)的事件监听器
2.用于监听用户会话对象(HttpSession)的事件监听器
3.用于监听请求消息对象(ServletRequest)的事件监听器

按监听的事件类项划分
1.用于监听域对象自身的创建和销毁的事件监听器
2.用于监听域对象中的属性的增加和删除的事件监听器
3.用于监听绑定到HttpSession 域中的某个对象的状态的事件监听器

Servlet 事件监听器的注册和调用过程都是由web 容器自动完成的,当发生被监听的对象被创建,修改和销毁等事件时,web 容器将调用与之相关的Servlet时间监听器对象的相应方法,用户在这些方法中编写的事件处理代码既被执行。另外,由于在一个web 应用中只会为每一个事件监听类创建一个实例对象,有可能出现多个线程同时调用一个事件监听对象的情况,所以要注意线程的安全问题

ServletContext容器相关的监听器

与此容器相关的监听器为ServletContextListener,可以监听servlet context的创建和销毁,当监听到servlet context创建时,将会自动执行监听器的contextInitialized方法;

当监听器监听到servlet context对象销毁时,将会自动调用contextDestroyed方法

此监听器可以用于在web应用启动时,初始化一些基础参数或创建基础数据库等内容。在结束时将这些数据清除或销毁。下面是示例小代码:

@Override
	public void contextInitialized(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		System.out.println("context对象被创建");
		ServletContext context = (ServletContext)sce.getSource();
		System.out.println(context.getMajorVersion());
	}

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
		// TODO Auto-generated method stub
		System.out.println("context对象被删除");
	}
web servlet的监听器不需要进行注册,只需要在web.xml文件中配置,程序将自动将其注册到相关事件源上去。

<listener>
  	<listener-class>cn.itcast.web.listener.MyServletContextListener</listener-class>
  </listener>

HttpSession相关监听器

与此容器相关的监听器接口是HttpSessionListener,此接口提供了两个方法:

sessionCreated(HttpSessionEvent se)

sessionDestroyed(HttpSessionEvent se)

只要实现此接口,便可以监听HttpSession的创建和销毁。创建和销毁将会自动调用上面对应的方法。此技术可以用在统计当前在线用户人数。同样,也许要在web.xml中配置。由于session是的有效时间默认是30分钟,可用在web.xml文件中通过<session-config>标签来配置session有效时间。如下是配置session有效时间为1分钟。一分钟过后,将会自动销毁session,从而自动调用监听器的sessionDestroyed方法

  <session-config>
  	<session-timeout>1</session-timeout>
  </session-config>

httpRequest对象监听器

只要实现ServletRequestListener接口便可以监听request对象的创建和销毁,此接口有两个方法:

requestDestroyed(ServletRequestEvent sre)

requestInitialized(ServletRequestEvent sre)

每次发起一个request请求后,都会创建一个request对象,从而导致requestInitialized被执行。此技术可以用来监控网站性能,可以统计一段时间内服务器接收多少请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值