Java Web笔记 – Servlet中的Listener监听器的介绍 常用监听器接口 实现监听器
本文由发表于6年前 | J2EE | 暂无评论 |  被围观 14,229 views+
1、常用的监听接口:1.1、ServletContextAttributeListener1.2、ServletContextListener1.3、HttpSessionListener1.4、HttpSessionAttributeListener2、一个监听器的实现步骤:

Listener是Servlet的监听器,它可以监听客户端的请求,服务器端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户数量。

比如,当增加一个HttpSession时,就自动触发sessionCreated(HttpSessionEvent se)方法,在这个方法中就可以统计在线人数了。

使用到了观察者模式

1、常用的监听接口:
1.1、ServletContextAttributeListener

监听ServletContext属性的操作,比如增加,删除或修改属性。

其中每个方法都提供了一个监听事件类:ServletContextAttributeEvent可以从这个类中获取被监听到的属性的名称和值。

attributeAdded
void attributeAdded(ServletContextAttributeEvent scab)
Notification that a new attribute was added to the servlet context. Called after the attribute is added.
attributeRemoved
void attributeRemoved(ServletContextAttributeEvent scab)
Notification that an existing attribute has been removed from the servlet context. Called after the attribute is removed.
attributeReplaced
void attributeReplaced(ServletContextAttributeEvent scab)
Notification that an attribute on the servlet context has been replaced. Called after the attribute is replaced.
1.2、ServletContextListener

当创建ServletContext对象时,激发contextInitialized方法;当销毁ServletContext对象时,激发contextDestroyed方法。

1.3、HttpSessionListener

当创建一个Session对象时,激发sessionCreated事件;当销毁一个Session对象时,激发sessionDestroyed事件。

sessionCreated
void sessionCreated(HttpSessionEvent se)
Notification that a session was created. 
Parameters: 
se - the notification event
sessionDestroyed
void sessionDestroyed(HttpSessionEvent se)
Notification that a session is about to be invalidated. 
Parameters: 
se - the notification event

HttpSessionEvent事件类:

public class HttpSessionEvent
extends EventObject
This is the class representing event notifications for changes to sessions within a web application.

相关方法:

getSession
public HttpSession getSession()
Return the session that changed.
1.4、HttpSessionAttributeListener

监听HttpSession中的属性操作,在HttpSession中添加一个属性时,激发attributeAdded方法;当在Session中删除一个属性时,激发attributeRemoved方法;当Session属性被重新设置时,激发attributeReplaced方法。

2、一个监听器的实现步骤:

这里编写一个ServletContextAttributeListener的实现类:

public class MyServletContextAttributeListener implements
        ServletContextAttributeListener {

    @Override
    public void attributeAdded(ServletContextAttributeEvent scab) {
        System.out.println("添加属性:" + scab.getName() + scab.getValue());
    }

    @Override
    public void attributeRemoved(ServletContextAttributeEvent scab) {
        System.out.println("删除属性:" + scab.getName() + scab.getValue());
    }

    @Override
    public void attributeReplaced(ServletContextAttributeEvent scab) {
        System.out.println("修改属性" + scab.getName() + scab.getValue());
    }
}

在web.xml部署描述符中部署:

<listener>
      <listener-class>com.itzhai.listener.MyServletContextAttributeListener</listener-class>
  </listener>

注意:监听器一般配置在拦截器的前面。

这样当有JSP或者Servlet添加,删除或修改了ContextAttribute的属性时就会触发相应的事件:

<% 
    //触发添加事件
    application.setAttribute("username", "arthinking");
    //触发修改事件
    application.setAttribute("username", "Jason");
%>

在开发中一般都是由框架实现这些接口。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-web-notes-servlet-listener-listener-in-the-listener-interface-commonly-used-in-listener.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 11/12
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 Unable to find ‘struts.multipart.saveDir’ Struts2上传文件错误的解决方法 2011/7/31
2 数据结构笔记 – 栈与队列 递归的使用 2011/10/21
3 org.hibernate.id.IdentifierGenerationException错误解决方法 2011/10/2
4 ExtJS的FileUploadField组件上传多个文件 2011/5/8
5 SVN版本管理工具的安装设置与使用 2011/11/30
6 jQuery插件的编写相关技术 设计总结和最佳实践 2012/8/8
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.