Servlet监听器一

半世苍凉 提交于 2019-12-30 12:07:15

了解Servlet之前我们先了解监听器是什么?字面意思,就是监听这个web干嘛了,然后我们根据得到的信息可以采取什么措施。

术语:监听器:专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。

Servlet对象根据监听的事件可以分为三种类型:域对象监听器,属性监听器,HttpSession域内对象监听器。本文主要讲解域对象监听器。

域对象(request、session、application)监听器:监听域对象自身的创建和销毁的事件监听器;原来域对象的创建和销毁我们无法参与,监听器的出现提供了参与的机会

下面我们通过一些实验对监听器进行了解,了解如何创建域对象监听器和域对象监听器何时作用。

1、创建一个名为“listener”的web项目,并将tomcat中的servlet包引入

2、创建applictionListener、sessionListener两个Class,并分别对应ServletContextListener、HttpSessionListener两个接口;

3、创建一个index.jsp

4、在web.xml进行配置

 

applictionListener中代码:

package listener;

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

public class applicationListener implements ServletContextListener {
    
        //在application销毁时执行,项目结束时就是销毁了,只有在超时事,材汇销毁
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("application desstoryed");
	}
	
	//在application创建时执行,项目发布时就是创建时
	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		System.out.println("application initialized");
	}

}

sessionListener中代码:

package listener;

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

public class sessionListener implements HttpSessionListener {

	//在session创建时执行
	@Override
	public void sessionCreated(HttpSessionEvent arg0) {
		System.out.println("session created");
	}

    //session结束时执行
	@Override
	public void sessionDestroyed(HttpSessionEvent arg0) {
		System.out.println("session desstoryed");
	}

}

index.jsp中代码:就是一个页面..为了session的创建

web.xml配置如下:

<web-app>
     <listener>
  	     <listener-class>listener.applicationListener</listener-class>
      </listener>
  
      <listener>
      	    <listener-class>listener.sessionListener</listener-class>
      </listener>
</web-app>

实验结果如下:

首先启动项目,在控制台可以看到:

然后打开浏览器进入127.0.0.1/listener/index.jsp,在控制台可以看到:

然后等了好久,session终于关闭了,大概等了半小时:因为大家是知道的,session是不会因为浏览器的关闭而关闭,所以就是等一下,或者是通过session.invalidate();

最后点击小红方块stop之后,就可以看到:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!