web事件操作【监听器】之对application监听

在上一篇文章“过滤器应用”中我们提到过Servlet一共有三种:简单Servlet、过滤Servlet和监听Servlet,和大家一起学习过了前两种Servlet之后,我们再一起来学习第三种Servlet--监听Servlet(监听器)

监听器

对某一些操作进行监听,就成为监听器,比如:有人走过,被摄像头拍下,这就是监听,很好理解。

WEB 中的监听主要的功能是用于对ServletContextsessionRequest进行监听的一种操作

当相关事件触发之后将产生事件,并对此事件进行处理。

对application进行监听

applicationServletContext接口的对象,表示的是整个上下文的环境

 如果要想实现对application监听,则可以使用如下两个接口:

ServletContextListenter:是对整个上下文环境的监控

ServletContextAttributeListener:对属性的监听

种接口;ServletContextListenter(对整个上下文环境的监控)

Servlet上下文状态监听可以使用javax.servlet.ServletContextListener 接口,此接口定的方法如下表:查找API文档 在javax.servlet中有个ServletContextListener

我们可以看到在两个方法中都有一个ServletContextEvent sce,  这是个事件 打开这个事件可以找到这样的一个方法。

在上下文状态的监听操作中,一旦触发了ServletContextListener接口中定义的事件后,可以通过ServletContextEvent进行事件的处理

1
2
3
4
5
6
7
8
9
10
11
package  listener;
import  javax.servlet.ServletContextEvent;
import  javax.servlet.ServletContextListener;
public  class  ServletContextListenerDemo  implements  ServletContextListener{
    public  void  contextInitialized(ServletContextEvent event){ //对上下文初始化触发
     System.out.println( "**容器初始化-->" +event.getServletContext().getContextPath());
    }
    public  void  contextDestroyed(ServletContextEvent event){ //上下文销毁时触发
        System.out.println( "**容器销毁-->" +event.getServletContext().getContextPath());
    }
}zai

在完成之后,老规矩,配置web.xml。

简单Servlet需要:<servelt><servlet-mapping>

 过滤器需要:<filter><filter-mapping>

但是现在的监听器就省事多了,直接编写<listener>即可

1
2
3
4
5
<listener>
     <listener- class >
         listener.ServletContextListenerDemo
     </listener- class >
</listener>

启动服务器,如下图所示,出现了初始化,当关闭服务器的时候就执行销毁了。

只要是容器的启动和关闭都呀执行这些操作,但是这样有什么用处,我们待会再说吧

种接口:ServletContextAttributeListener(对属性的监听)

此接口可以直接对属性监听

看一下这个接口的方法: 在APIjavax.servlet中的ServletContextAttributeList

在上下文属性监听中,一旦触发了ServletContextAttributeListener接口中定义的事件后,可以通过ServletContextAttributeEvent进行事件的处理,事件定义方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
package  listener;
import  javax.servlet.*;
public  class  ServletContextAttributeListenerDemo  implements  ServletContextAttributeListener {
      public  void  attributeAdded(ServletContextAttributeEvent event){ //属性增加时触发
          System.out.println( "**增加属性->:" +event.getName()+ ",属性内容:" +event.getValue()); 
      }
      public  void  attributeRemoved(ServletContextAttributeEvent event){ //属性删除的时触发
          System.out.println( "**删除属性->属性名称:" +event.getName()+ ",属性内容:" +event.getValue());
      }
      public  void  attributeReplaced(ServletContextAttributeEvent event){ //属性替换时触发
          System.out.println( "**增加替换->属性名称:" +event.getName()+ ",属性内容:" +event.getValue());
      }
}

配置web.xml文件如下

1
2
3
4
5
<listener>
     <listener- class >
         listener.ServletContextAttributeListenerDemo
     </listener- class >
</listener>

这个时候启动服务器是没有效果显示的

这个时候为了看出我们设置的application,可以写一个JSP页面

1
2
3
4
5
6
7
8
9
10
11
12
13
application_attribute_add.jsp
<%@ page language= "java"  contentType= "text/html"  pageEncoding= "utf-8" %>
<html>
<head>
<title>WEB开发项目</title>
</head>
<body>
<%
     //设置application范围属性
     this .getServletContext().setAttribute( "info" , "http://zhaoyuqiang.blog.51cto.com" );
%>
</body>
</html>

启动服务器,然后在浏览器中输入:http://localhost:8080/test/jsp/application_attribute_add.jsp

页面什么都东西都没有 但是看我们的服务器,如下图所示:

当我们刷新浏览器的时候,服务器显示替换属性了,重复刷新就重复替换,如下图所示

那什么时候可以删除呢?为了观察方便,我们再来新建一个JSP页面

1
2
3
4
5
6
7
8
9
10
11
12
13
application_attribute_remove.jsp
<%@ page language= "java"  contentType= "text/html"  pageEncoding= "utf-8" %>
<html>
<head>
<title>WEB开发项目</title>
</head>
<body>
<%
     //设置application范围属性
     this .getServletContext().removeAttribute( "info" );
%>
</body>
</html>

在浏览器中输入:http://localhost:8080/test/jsp/application_attribute_remove.jsp 观察服务器效果如下

监听器就是实现接口,覆写方法


以上都是对application实现操作的监听,session对象额监听我们下一篇文章再进行学习吧!


本文出自 “赵玉强的博客” 博客,请务必保留此出处http://zhaoyuqiang.blog.51cto.com/6328846/1197628

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值