- Listener的作用对Web应用对象的行为进行监控。
- 通过Listener监听自动触发指定功能代码。
这里Web应用对象通常指这三种:
ServletContext–对全局ServletContext及其属性进行监听
HttpSession–对用户会话及其属性 *** 作进行监听
ServletRequest–对请求以及属性 *** 作进行监听
在这些属性进行修改时,就会被监听器捕获,从而执行相应的功能代码。
开发监听器的三要素- 实现XxxLsitener接口,不同接口对应不同监听对象
- 实现每个接口中独有的方法,实现触发监听的后续 *** 作
- 在web.xml中配置标签使监听器生效
在这里我们实际 *** 作一下(开发工具使用的Eclipse),首先创建一个Web工程,工程名为first-listener,在src文件夹中创建一个包,包名为com.sias.listener,在该包中创建一个类,类名为FirstListener。
上图为我们的工程结构图,接下来我们将在FirstListener类中实现我们第一个监听器。
package com.imooc.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; //导入ServletContextListener监听器接口 public class FirstListener implements ServletContextListener{ //重写监听器初始化方法 @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("ServletContext已初始化"); } //重写监听器销毁方法 @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("ServletContext已销毁"); } }
此时我们监听器已经完成,接下来将监听器配置使用。
监听器的配置方法- 监听器web.xml配置
包名.类名
2.监听器注释
@WebListener
个人建议对于像监听器这种全局变量建议在web.xml文件中配置。
实例 *** 作- 我们首先在web.xml文件中配置。
first-listener index.html index.htm index.jsp default.html default.htm default.jsp com.sias.listener.FirstListener
这时候我们就配置成功了。
接下来我们启动程序。接下来我们观察控制台。
在这里我们可以看到在启动Tomcat服务器时,自动调用了监听器初始化方法contextInitialized(),在控制台打印出“ServletContext已初始化”。
在这里说明一下,ServletContext全局对象在应用启动时会自动初始化,而我们的监听器捕获到了ServletContext的初始化 *** 作,所以就自动调用了监听器初始化方法,所以在控制台就输出了“ServletContext已初始化”。
接下来我们关闭服务器,观察控制塔台,发现调用了监听器的销毁方法输出“ServletContext已销毁”。
2.接下来我们尝试用注释的方法配置监听器。
首先我们先要把web.xml中配置监听器的语句给注释掉,接下来,打开FirstListener类在里面添加 @WebListener注释。
package com.sias.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; //监听器注释 @WebListener public class FirstListener implements ServletContextListener{ //监听器初始化方法 @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("ServletContext已初始化"); } //监听器销毁方法 @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("ServletContext已销毁"); } }
我们再次启动程序,发现控制台输出的语句跟配置web.xml的输出语句一模一样,这说明我们配置成功了。
在这里多提一嘴,过滤器和监听器的区别:
过滤器(Filter)的职责是对URL进行过滤拦截,是主动的执行
监听器(Listener)的职责是对Web对象进行监听,是被动触发
注:本篇文章仅个人见解,若有错误,欢迎指正!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)