1. 程式人生 > >--Listener (三)使用Listener來實現顯示當前線上人數

--Listener (三)使用Listener來實現顯示當前線上人數

主要的思路是:每當使用者第一次訪問web應用的時候都會建立一個session來跟蹤會話,可以監聽session的變化來記錄當前線上的人數。每當建立session的時候,人數+1,當session銷燬的時候,人數減1(在application(servletContext)新增一個屬性來儲存人數)。這樣一來可以建立一個session監聽器,監聽session的變化就可以獲得當前的人數。

package com.tuxianchao.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import
javax.servlet.http.HttpSessionListener; public class OnlineNumberListener implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent sessionEvent) { System.out.println("建立session,人數加1"); // 獲取servletcontext ServletContext context = sessionEvent.getSession().getServletContext(); // 獲取當前人數
Integer count = (Integer) context.getAttribute("OnlineCount"); if (count == null) { // 若果為空,初始化為1(第一個訪問的使用者) count = new Integer(1); } else { // +1 int i = count.intValue(); count = new Integer(i + 1); } // 改變人數
context.setAttribute("OnlineCount", count); } @Override public void sessionDestroyed(HttpSessionEvent sessionEvent) { System.out.println("銷燬session,人數減1"); ServletContext context = sessionEvent.getSession().getServletContext(); Integer count = (Integer) context.getAttribute("OnlineCount"); int i = count.intValue(); count = new Integer(i - 1); context.setAttribute("OnlineCount", count); } }

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <h1>Index</h1>
    <h4>
        Online:<%=application.getAttribute("OnlineCount")%></h4>
</body>
</html>

啟動後:這裡寫圖片描述
再使用chrome訪問:
這裡寫圖片描述

相關推薦

no