監聽器種類數不勝數,監聽器最常被應用在GUI中,不過網站中也可以設置監聽器,這裡我們利用sessionListener實現一個網站線上人數統計的監聽來瞭解一下監聽器的使用。 首先建立一個類來實現監聽器OnlineListener.class 1 package com.jms.listener; 2 ...
監聽器種類數不勝數,監聽器最常被應用在GUI中,不過網站中也可以設置監聽器,這裡我們利用sessionListener實現一個網站線上人數統計的監聽來瞭解一下監聽器的使用。
首先建立一個類來實現監聽器OnlineListener.class
1 package com.jms.listener; 2 3 import javax.servlet.ServletContext; 4 import javax.servlet.http.HttpSessionEvent; 5 import javax.servlet.http.HttpSessionListener; 6 7 public class OnlineListener implements HttpSessionListener{ 8 9 //統計網站中線上人數 10 11 //創建session時,觸發這個監聽 12 @Override 13 public void sessionCreated(HttpSessionEvent se) { 14 ServletContext sctContext = se.getSession().getServletContext(); 15 Integer onlinenumber = (Integer) sctContext.getAttribute("OnlineNumber"); 16 if(onlinenumber == null) { 17 onlinenumber = 1; 18 } else { 19 onlinenumber += 1; 20 } 21 sctContext.setAttribute("OnlineNumber", onlinenumber); 22 } 23 24 //銷毀session時,觸發這個監聽 25 @Override 26 public void sessionDestroyed(HttpSessionEvent se) { 27 ServletContext sctContext = se.getSession().getServletContext(); 28 Integer onlinenumber = (Integer) sctContext.getAttribute("OnlineNumber"); 29 if(onlinenumber > 0) { 30 onlinenumber -= 1; 31 } 32 sctContext.setAttribute("OnlineNumber", onlinenumber); 33 } 34 35 36 }
編輯我們的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>線上人數</title>
</head>
<body>
<% response.setHeader("Refresh", "3"); %>
<h1><span style="color:blue">當前線上人數:<%=pageContext.getServletContext().getAttribute("OnlineNumber") %></span></h1>
</body>
</html>
修改web.xml
<listener> <listener-class>com.jms.listener.OnlineListener</listener-class> </listener>
訪問網站,測試一下效果如何
打開一個瀏覽器
打開第二個瀏覽器
設置的session過期時間為1分鐘
(本文僅作個人學習記錄用,如有紕漏,敬請指正)