1. 程式人生 > 其它 >利用session獲取網站線上人數

利用session獲取網站線上人數

技術標籤:javaWebjavasessionservletweb

什麼是Session

Session對應的中文翻譯是會話。
會話指的是從使用者開啟瀏覽器訪問一個網站開始,無論在這個網站中訪問了多少頁面,點選了多少連結,都屬於同一個會話。 直到該使用者關閉瀏覽器為止,都屬於同一個會話。

HTTP協議是短連結的,所以無法在服務端根據建立了多少連線來統計當前有多少人線上。 不過可以通過統計session有多少來估計線上人數。

一旦一個使用者訪問伺服器,就會建立一個session. 如果該使用者持續訪問,那麼該session會持續有效。

如果經歷了30分鐘,該使用者也沒有做任何操作,就表示該使用者“下線” 了,其對應的session也會被銷燬。

所以可以通過統計有多少session被保留來估計當前線上人數。

PeopleLisened.java

package com.chenchangjie.listener;


import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class PeopleListener implements HttpSessionListener {
    /**
     * 監聽session建立
     * @param se
     */
@Override public void sessionCreated(HttpSessionEvent se) { ServletContext context = se.getSession().getServletContext(); Integer num = (Integer) context.getAttribute("online_num"); if(num == null) num = 0; ++num; context.setAttribute
("online_num",num); System.out.println("新增一位使用者..."); } /** * 監聽session銷燬 * @param se */ @Override public void sessionDestroyed(HttpSessionEvent se) { ServletContext context = se.getSession().getServletContext(); Integer num = (Integer) context.getAttribute("online_num"); if(num == null) num = 0; else --num; context.setAttribute("online_num",num); System.out.println("減少一位使用者..."); } }

web.xml新增配置

<listener>
        <listener-class>com.chenchangjie.listener.PeopleListener</listener-class>
</listener>

test.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    ${online_num}

</body>
</html>

開一個就會增加,關一個重新整理就會減少
在這裡插入圖片描述