JSP监听器用法分析

所属分类: 网络编程 / JSP编程 阅读数: 1908
收藏 0 赞 0 分享

本文实例讲述了JSP监听器用法。分享给大家供大家参考,具体如下:

监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会触发sessionCreate(HttpSessionEvent se)方法,这样就可以给在线人数加1.常用的监听器接口如下:

1. ServletContextAttributeListener监听对ServletContext属性的操作。比如增加,删除,修改属性。

2. ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent   sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent   sce)方法。

3. HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session   Created(HttpSessionEvent   se)方法;当销毁一个Session时,激发sessionDestroyed   (HttpSessionEvent   se)方法。
4. HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent   se)   方法;

当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;

当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。

一个在线统计的例子:

public class ONline implements ServletContextListener,HttpSessionListener,HttpSessionAttributeListener(){
private ServletContext application = null;
 public void contextInitialized(ServletContextEvent arg0) {
 //根据响应事件参数初始化ServletContext
 this.application = arg0.getServletContext();
 //在ServletContext中存放一个空的用户信息列表
 application.setAttribute("users", new ArrayList());
 }
 public void sessionDestroyed(HttpSessionEvent arg0) {
 List list = (List)application.getAttribute("users");
 String name = arg0.getSession().getAttribute("name").toString();
 list.remove(name);
 application.setAttribute("users", list);
 }
 public void attributeAdded(HttpSessionBindingEvent arg0) {
 List list = (List)application.getAttribute("users");
 if(arg0.getName().equals("name")){
  list.add(arg0.getValue().toString());
 }
 application.setAttribute("users", list);
 }
}

web.xml文件中配置:

<listener>
   <listener-class>package.classname</listener-class>
</listener>

附:session在何时被创建?

常见的误解是session在有客户端访问时就被创建,然而事实是某server端调用HttpServletRequest.getSession(true)这样的语句时才被创建。注意如果jsp页面没有显式的使用<%page session="false"%>来关闭session,则在jsp页面编译成Servlet页面时会自动加上HttpServletRequest.getSession(true)这句话。这也是jsp中隐藏对象session的来历。

希望本文所述对大家jsp程序设计有所帮助。

更多精彩内容其他人还在看

table中点击表头实现排序的功能示例介绍

获取上次点击的表头的名称和这次点击的表头的名称做比较,如果两者相同就按原先相反的顺序排列,否则新列升序排列
收藏 0 赞 0 分享

jsp防止跨域提交数据的具体实现

这篇文章主要介绍了jsp防止跨域提交数据的具体实现,需要的朋友可以参考下
收藏 0 赞 0 分享

解决jsp页面使用网络路径访问图片的乱码问题

这篇文章主要介绍了jsp页面使用网络路径访问图片的乱码问题的解决方法 ,需要的朋友可以参考下
收藏 0 赞 0 分享

在jsp页面如何获得url参数

这篇文章主要介绍了在jsp页面获得url参数的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

几种防止表单重复提交的方法

表单重复提交是在多用户Web应用中最常见的一个问题,很多场合都会遇到这种情况,下面与大家分享下防止表单重复提交的几种策略
收藏 0 赞 0 分享

struts2集成javamail发邮件示例详解

这篇文章主要介绍了struts2集成javamail发邮件示例,需要的朋友可以参考下
收藏 0 赞 0 分享

不让tomcat显示目录文件列表的配置方法

这篇文章主要介绍了不让tomcat显示目录文件列表的配置方法,这里需要修改conf/web.xml文件,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp使用cookie存储中文示例分享

这篇文章主要介绍了jsp使用cookie存储中文示例,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp中include指令静态导入和动态导入的区别详解

这篇文章主要介绍了jsp中include指令静态导入和动态导入的区别,通过示例和图文讲解可以更好的看出他们的区别,需要的朋友可以参考下
收藏 0 赞 0 分享

jsp中文显示问号问题解决方法

jsp中想要输出的中文被显示成问号?在eclipse-windows- preferences中搜索jsp,Encoding选项中选择 Chinese,此问题便可解决
收藏 0 赞 0 分享
查看更多