摘要:實現(xiàn)思路常見的流程是標(biāo)準(zhǔn)的即登錄表單用戶提交數(shù)據(jù)到登錄檢查若登錄檢查通過以后觸發(fā)事件保存進(jìn)入在線人員列表中頁面跳轉(zhuǎn)到在線用戶列表若用戶注銷從在線列表中刪除代碼如下使用集合即集合去重原因內(nèi)部存儲為的鍵值對為由于哈希表的特征即可去重項目結(jié)構(gòu)
實現(xiàn)思路
常見的流程是,標(biāo)準(zhǔn)的mvc 即 登錄表單,用戶提交數(shù)據(jù)到登錄檢查,若登錄檢查通過以后,觸發(fā)session事件,保存進(jìn)入在線人員列表中,頁面跳轉(zhuǎn)到在線用戶列表,若用戶注銷,從在線列表中刪除.
代碼如下使用set集合, 即 set集合去重 原因 內(nèi)部存儲為map,mqp的鍵值對為hashcode 由于哈希表的特征 即 set可去重項目結(jié)構(gòu) 創(chuàng)建迭代器
package com.ming.listener; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import java.util.Set; import java.util.TreeSet; // 對servlet 上下文監(jiān)聽 public class OnlineUserList implements HttpSessionAttributeListener, HttpSessionListener, ServletContextListener { private ServletContext servletContext = null; // 增加session屬性的時候,觸發(fā)事件 // session 屬性增加 @Override public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { Set all = (Set)this.servletContext.getAttribute("online"); all.add(httpSessionBindingEvent.getValue()); this.servletContext.setAttribute("online", all); } // 用戶注銷登錄 // session 屬性刪除 @Override public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) { Set all = (Set)this.servletContext.getAttribute("online"); all.remove(httpSessionBindingEvent.getValue()); this.servletContext.setAttribute("online", all); } @Override public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) { } // 上下文初始化 // 初始化 @Override public void contextInitialized(ServletContextEvent servletContextEvent) { // 獲得上下文實栗 this.servletContext = servletContextEvent.getServletContext(); // 設(shè)置保存set集合 this.servletContext.setAttribute("online", new TreeSet()); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } @Override public void sessionCreated(HttpSessionEvent httpSessionEvent) { } // session 銷毀 @Override public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { Set all = (Set)this.servletContext.getAttribute("online"); all.remove(httpSessionEvent.getSession().getAttribute("id")); this.servletContext.setAttribute("online", all); } }配置文件
在線用戶統(tǒng)計Archetype Created Web Application com.ming.listener.OnlineUserList LoginFile com.ming.filter.LoginFile LoginFile /index.jsp login com.ming.servlrt.LoginServlet login /loginServlet
<%@ page import="java.util.Set" %> <%@ page import="java.util.Iterator" %> <%@ page import="javax.swing.text.html.HTMLDocument" %><%-- Created by IntelliJ IDEA. User: ming Date: 19-3-17 Time: 上午4:14 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %>運(yùn)行效果Title 您已經(jīng)登錄 顯示用戶在線 <% Set all = (Set)super.getServletContext().getAttribute("online"); Iterator iterator = all.iterator(); while(iterator.hasNext()){ %> <%=iterator.next()%> <% } %>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73747.html
摘要:現(xiàn)在,我們想要統(tǒng)計的是網(wǎng)站的在線人數(shù)。隔一段時間去做某事,這肯定是定時器的任務(wù)呀。定時器應(yīng)該在服務(wù)器一啟動的時候,就應(yīng)該被創(chuàng)建了。定時器掃描容器的時候,可能是獲取不到所有的的。 從第一篇已經(jīng)講解過了監(jiān)聽器的基本概念,以及Servlet各種的監(jiān)聽器。這篇博文主要講解的是監(jiān)聽器的應(yīng)用。 統(tǒng)計網(wǎng)站在線人數(shù) 分析 我們在網(wǎng)站中一般使用Session來標(biāo)識某用戶是否登陸了,如果登陸了,就在Ses...
摘要:當(dāng)過濾器有注入其他類時,可直接通過的方式進(jìn)行實體類過濾器,這樣不可自動注入過濾器使用的其他類。就是先簡單的記錄一下攔截器,過濾器和監(jiān)聽器的簡單使用方法,后期如果有詳細(xì)的使用方法,再來更新本文。 很多時候我們都想要做一些與業(yè)務(wù)邏輯無關(guān)的事情,比如統(tǒng)計在線人數(shù),篩選登陸賬號,統(tǒng)計頁面瀏覽量等等。。。這時候我們就需要用到今天講到的這些工具了。 首先我們先看一下攔截器 我們需要先自定義...
摘要:無證連接進(jìn)行異常記錄并關(guān)閉連接。離線消息檢測到上線立即推送這是消息推送需要實現(xiàn)的基本功能之一了,詳見代碼。主要功能協(xié)助進(jìn)行初始化,心跳包檢測,斷線自動重連消息推送的第二種方式在下篇中再編寫 消息重發(fā)中需要注意的問題 由于最近工作中接觸了比較多關(guān)閉消息推送以及異常重發(fā)機(jī)制的問題,終于得空總結(jié)一下經(jīng)驗 目前接觸的消息推送分為兩種 主動推送:一般為websocket建立長連接實現(xiàn),此處網(wǎng)上...
摘要:實栗實現(xiàn)登錄實現(xiàn)思路一個表單頁,輸入用戶登錄和密碼,然后信息提交到頁面進(jìn)行驗證,如果可以服務(wù)器跳轉(zhuǎn)到登錄成功頁,失敗,跳轉(zhuǎn)到錯誤頁跳轉(zhuǎn)的時候窗口的地址會發(fā)生變化代碼如下編寫登錄代碼登錄登錄登錄操作用戶登錄登錄登錄密碼登錄重置登錄處理 jsp 實栗 jsp + jdbc 實現(xiàn)登錄 實現(xiàn)思路 一個表單頁,輸入用戶登錄和密碼,然后信息提交到j(luò)sp頁面進(jìn)行驗證,如果可以服務(wù)器跳轉(zhuǎn)到登錄成功頁,...
閱讀 654·2021-11-15 11:39
閱讀 2890·2021-10-08 10:04
閱讀 3252·2019-08-30 10:57
閱讀 3014·2019-08-26 13:25
閱讀 1896·2019-08-26 12:14
閱讀 2626·2019-08-23 15:27
閱讀 2988·2019-08-23 15:18
閱讀 1766·2019-08-23 14:26