`

上下线 在线用户数listenner

    博客分类:
  • j2ee
阅读更多

下面是搜集的一些listener方面的知识

简例一

监听用户上线与退出,显示在线用户

1、登陆页面 Login.jsp

<%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" %>
<%
session=request.getSession(false);
if(session!=null)session.invalidate();
%>
<html>
<head><title></title></head>
<body>
<form action="isOnline.jsp" method="post">
用户名:<input type="text" name="uName"/>
<input type="submit" value="上线">
</form>
</body>
</html>

2、控制页面(只是为了说明监听器问题,所以简单了点...) isOnline.jsp

<%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" %>
<html>
<head><title></title></head>
<body>
<%
session=request.getSession();
session.setAttribute("userName",request.getParameter("uName"));
response.sendRedirect("showOnline.jsp");
%>
</body>
</html>


3、显示页面 showOnline.jsp

<%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" import="java.util.ArrayList" %>
<html>
<head><title></title></head>
<body>
<%
ArrayList showList=(ArrayList)(getServletContext().getAttribute("list"));
out.print("在线人数 "+showList.size()+"<br>");
for(int i=0;i<showList.size();i++){
out.print(showList.get(i)+"在线"+"<br>");
}
%>
<br>
<a href="Login.jsp">退出</a>
</body>
</html>

4、配置页面 web.xml

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<listener>
    <listener-class>org.xiosu.listener.onlineListener</listener-class>
</listener>
</web-app>

5、监听器 onlineListener.java

package org.xiosu.listener;

import java.util.ArrayList;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class onlineListener implements HttpSessionListener,
  HttpSessionAttributeListener {
// 参数
ServletContext sc;
ArrayList list = new ArrayList();
// 新建一个session时触发此操作
public void sessionCreated(HttpSessionEvent se) {
  sc=se.getSession().getServletContext();
  System.out.println("新建一个session");
}
// 销毁一个session时触发此操作
public void sessionDestroyed(HttpSessionEvent se) {
  System.out.println("销毁一个session");
  if (!list.isEmpty()) {
   list.remove((String) se.getSession().getAttribute("userName"));
   sc.setAttribute("list", list);
  }
}
// 在session中添加对象时触发此操作,在list中添加一个对象
public void attributeAdded(HttpSessionBindingEvent sbe) {
  list.add((String) sbe.getValue());
  sc.setAttribute("list", list);
}
// 修改、删除session中添加对象时触发此操作
public void attributeRemoved(HttpSessionBindingEvent arg0) {
}
public void attributeReplaced(HttpSessionBindingEvent arg0) {
}
}


说明:本例只为简单介绍监听器,并未进行安全方面设置。

监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent   se)方法,这样
就可以给在线人数加1。常用的监听接口有以下几个:
ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。
ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent   sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent   sce)方法。
HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session   Created(HttpSessionEvent   se)方法;当销毁一个Session时,激发sessionDestroyed   (HttpSessionEvent   se)方法。
HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发attributeAdded(HttpSessionBindingEvent   se)   方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent   se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent   se)   方法。
example:随服务器启动
web-app>

      com.tb.listener.CountStartListener


package com.tb.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
import com.tb.timertask.DoCountTask;
public class CountStartListener extends HttpServlet implements ServletContextListener
{
private static final long serialVersionUID = 1824920962239905170L;
public CountStartListener()
{
   // TODO Auto-generated constructor stub
}
public void contextDestroyed(ServletContextEvent arg0)
{
   // TODO Auto-generated method stub
}
   public void contextInitialized(ServletContextEvent arg0)
{   
   DoCountTask.dotask();
}
}

分享到:
评论

相关推荐

    android 纵向滑动页面(上下滑动效果)

    `ViewPager`是Android支持库中的一个控件,它允许用户左右或上下滑动来浏览多个页面,非常适合创建翻页效果。 要创建一个纵向滑动的页面,我们需要以下步骤: 1. **添加依赖**: 首先确保你的项目依赖了`Android ...

    呕心沥血的java复杂聊天室(包括自定义应用层协议、CS多线程、多客户端登录、上下线提醒等等)

    Java复杂聊天室是一个涵盖多个关键技术点的项目,其中包括自定义应用层协议的设计、客户端-服务器(CS)架构下的多线程编程以及实现多客户端登录与上下线提醒功能。以下是对这些知识点的详细解释: 1. **自定义应用层...

    Android抖动动画效果(上下抖和以角旋转)

    在Android开发中,动画效果是提升用户体验的重要手段之一。"Android抖动动画效果(上下抖和以角旋转)"这个主题主要关注如何实现物体在屏幕上进行上下抖动和以角度旋转这两种动态效果。抖动动画通常用于错误提示、...

    扁等线简体,扁等线体。

    用户可以通过安装这个.TTF文件将扁等线简体添加到他们的系统中,从而在各种应用程序中使用此字体。 在实际应用中,设计师可能会结合扁等线简体与其他设计元素,如色彩、图像和排版,来创造出引人注目的视觉效果。...

    实时、历史曲线绘制 c#

    在IT行业中,实时和历史曲线绘制是数据...综上所述,实时和历史曲线绘制在C#中涉及了图形库的使用、数据处理、性能优化以及用户交互等多个方面。通过学习和实践,开发者可以构建出功能强大且直观的曲线图表应用程序。

    HTML5页面,上下切换页面效果

    本主题聚焦于利用HTML5来实现页面之间的上下切换效果,这种效果常见于移动应用中,能为用户提供流畅的导航体验。 首先,我们要理解HTML5的核心特性之一是离线存储能力,通过`Application Cache`或`Service Worker`...

    曲线拟合计算(java实现)

    用户需要提供数据点,选择合适的拟合模型,然后调用相应的函数来计算拟合参数。 除了Apache Commons Math,还有其他Java库如JAMA(Java Matrix Package)和EJML(Efficient Java Matrix Library)可以进行矩阵运算...

    中国九段线shp

    通过这些数据,用户可以清楚地看到九段线的具体走向,分析其与周边海域的关系,以及进行各种地理空间分析。 了解如何正确处理和分析这些数据至关重要,因为它们涉及到国家的领土主张和海洋权益。在实际应用中,可能...

    Android之抽屉效果的下拉菜单(上下伸缩和展开)

    抽屉的样式可以根据需求进行定制,包括背景颜色、文字样式、分割线等。这些都可以通过设置XML属性或者在代码中动态修改来实现。 5. **优化与性能**: - 考虑到性能,抽屉视图中的数据应按需加载,避免一次性加载...

    SolidWorks管道与布线教程 2012版.pdf

    例如,设计一个水处理系统的管道布局或一个自动化生产线上的电气控制系统。 ### 固定版本特性与注意事项 #### 1. **2012版本特性** - 针对2012版本,可以关注该版本中新引入的功能,比如改进了的管道设计工具、...

    MFC 动态曲线 支持缩放

    - 需要计算并绘制坐标轴,这涉及到确定最大和最小值,以及刻度线和标签的分布。 - 可以使用SetWindowExtEx()和SetViewportExtEx()函数调整设备上下文的扩展和视口扩展,以实现坐标轴的缩放。 6. **性能优化**: ...

    三次样条曲线拟合VC++

    9. **误差分析**:为了评估拟合质量,可以计算拟合曲线与原始数据点之间的残差或使用某种误差度量,如均方根误差。 10. **适用场景**:三次样条曲线拟合常用于数据插值、信号平滑、曲线设计和动画生成等领域。在...

    Android抽屉效果上下抽屉

    这个效果常见于许多应用程序,如Google Maps、Gmail等,它允许用户从屏幕边缘滑动以显示一个可隐藏的侧边栏,通常用于放置导航菜单或其他功能选项。 抽屉效果的实现主要涉及以下几个关键知识点: 1. **...

    三菱PLC编程数据线USB驱动程序

    这种数据线允许用户将USB接口的电脑连接到PLC的串行接口,实现数据传输。 "三菱USB转串口驱动"是确保这种连接正常工作的关键组件。这个驱动程序使得操作系统能够识别并正确处理USB转串口设备,使其在编程软件中表现...

    android 上下平滑滑动翻页

    在Android开发中,实现平滑滑动...总结来说,"android 上下平滑滑动翻页"涉及到了Android手势识别、动画制作、视图缓存、性能优化等多个关键知识点,通过掌握这些技术,开发者可以构建出更加生动、用户友好的应用程序。

    SVG绘制K线图

    1.根据用户选择的时间区间,显示最高价和最低价。 2.点击最高价或最低价的flags会显示出相应的时间。 3.动态改变X轴时间显示格式(%Y %Y-%m %m-%d),防止样式重叠在一起。 4. 动态改变Y轴的最大值最小值,防止K...

    urtracker免费版(3.3.0.813 ) 一个月后五个用户限制的破解dll

    urtracker免费版(3.3.0.813 )基本上可以完成小型团队的需求,功能也很强大,但安装一个月后用户数不能多于5个的限制也很麻烦,因此稍微修改了一下URTracker2.dll文件,做到了用不过期也就没有用户数的限制了,直接...

    C#Winform图片剪切拼接终结版(多幅图片拼接、左右上下拼接)

    标题“C# Winform图片剪切拼接终结版(多幅图片拼接、左右上下拼接)”表明这是一个针对C#开发者,特别是那些在Windows桌面应用开发领域工作的程序员的资源。描述中提到,该工具增加了去除剪切框的功能,并支持多种...

    HTML5手机专题页面触屏滑动上下翻页特效

    "HTML5手机专题页面触屏滑动上下翻页特效"就是其中的一个典型应用场景,它旨在提升用户在手机端浏览网页的体验,通过触屏手势实现流畅的上下翻页效果。 首先,HTML5的`&lt;meta&gt;`标签可以设置页面的视口(viewport),...

    jq实现上下滑动效果

    本篇文章将详细讲解如何使用jQuery实现页面的上下滑动效果,这种效果在移动设备和桌面端的应用中都非常常见,如新闻滚动、产品展示等。 首先,确保在你的HTML文件中引入了jQuery库。可以使用CDN链接,如下所示: ``...

Global site tag (gtag.js) - Google Analytics