黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Servlet教程

Servlet HttpSessionListener監(jiān)聽器統(tǒng)計(jì)網(wǎng)站在線人數(shù)

在許多網(wǎng)站或者軟件應(yīng)用中都有統(tǒng)計(jì)當(dāng)前在線人數(shù)這一功能。在通常情況下,當(dāng)一個(gè)用戶進(jìn)入網(wǎng)站時(shí)就會(huì)創(chuàng)建一個(gè) HttpSession 對象,而當(dāng)用戶離開網(wǎng)站時(shí),HttpSession 對象就會(huì)被銷毀。

在 Servlet 的八種監(jiān)聽器中,HttpSessionListener 監(jiān)聽器就可以監(jiān)聽 Web 應(yīng)用中 HttpSession 對象的創(chuàng)建和銷毀過程。因此,可以使用實(shí)現(xiàn)了 HttpSessionListener 接口的監(jiān)聽器統(tǒng)計(jì)網(wǎng)站的當(dāng)前在線人數(shù)。下面將分步驟講解如何使用監(jiān)聽器統(tǒng)計(jì)網(wǎng)站當(dāng)前在線人數(shù)。

1、創(chuàng)建監(jiān)聽器

在 filterDemo01 項(xiàng)目的 com.mengma.listener 包中,創(chuàng)建一個(gè)實(shí)現(xiàn)了 HttpSessionListener 接口的監(jiān)聽器類 OnlineListener,在該類中編寫用于實(shí)現(xiàn)統(tǒng)計(jì)網(wǎng)站在線人數(shù)的代碼,如下所示。

package com.mengma.listener;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class OnlineListener implements HttpSessionListener {
    private int count = 0; // 用于統(tǒng)計(jì)在線人數(shù)
    @Override
    public void sessionCreated(HttpSessionEvent hse) {
        count++; // Session對象創(chuàng)建時(shí)count變量加1
        ServletContext context = hse.getSession().getServletContext();
        context.setAttribute("count", new Integer(count));
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent hse) {
        count--; // session對象銷毀時(shí)count變量減1
        ServletContext context = hse.getSession().getServletContext();
        context.setAttribute("count", new Integer(count));
    }
}

在 OnlineListener.java 中,首先定義了一個(gè)用于統(tǒng)計(jì)在線人數(shù)的成員變量 count。當(dāng)每次監(jiān)聽到 HttpSession 對象創(chuàng)建時(shí),count 成員變量會(huì)加 1。當(dāng)每次監(jiān)聽到 HttpSession 對象銷毀時(shí),count 成員變量會(huì)減 1。

在每次修改 count 成員變量后,還應(yīng)該將 count 成員變量的值保存到 ServletContext 對象中,以便其他 JSP 頁面程序可以從 ServletContext 對象中取出 count 成員變量,從而在頁面上顯示當(dāng)前在線用戶數(shù)量。

在 web.xml 文件中,配置 OnlineListener 事件監(jiān)聽器,具體代碼如下:

<listener>
    <listener-class>
        com.mengma.listener.OnlineListener
    </listener-class>
</listener>

需要注意的是,這個(gè) HttpSession 對象在不活動(dòng)時(shí)的最長存活時(shí)間仍然是 2min。

2.、創(chuàng)建首頁和注銷頁面

① 實(shí)現(xiàn)首頁

在項(xiàng)目的 WebContext 目錄中,創(chuàng)建一個(gè)名稱為 index.jsp 的頁面,該頁面用于保存在 ServletContext 對象中的 count 變量值,即相當(dāng)于顯示當(dāng)前在線人數(shù),如下所示。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<title>首頁</title>
</head>
<body>
    <h3>
            當(dāng)前在線人數(shù)為:<%=application.getAttribute("count") %>
    </h3>
    <a href="<%=response.encodeUrl("logout.jsp") %>">退出登錄</a>
</body>
</html>

② 實(shí)現(xiàn)注銷頁面

在項(xiàng)目的 WebContext 目錄中,編寫注銷頁面 logout.jsp,logout.jsp 頁面用于使當(dāng)前 Session 對象失效,即完成用戶注銷功能,如下所示。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<title>注銷頁面</title>
</head>
<body>
    <%session.invalidate();%>
    <h3>您已退出本系統(tǒng)</h3>
</body>
</html>

3、運(yùn)行項(xiàng)目并查看結(jié)果

啟動(dòng) Tomcat 服務(wù)器,在瀏覽器的地址欄中輸入地址 http://localhost:8080/filterDemo01/index.jsp 訪問 index.jsp 頁面,然后再分別開啟兩個(gè)不同的瀏覽器窗口(如火狐和谷歌瀏覽器)同時(shí)訪問 index.jsp 頁面(目的是防止同一個(gè)瀏覽器共享同一個(gè)Session會(huì)話),此時(shí),各個(gè)瀏覽器窗口中顯示的結(jié)果如圖 1 所示。

圖 1 login.jsp頁面

單擊圖 1 中任意一個(gè)瀏覽器窗口中的“退出登錄”超鏈接,都會(huì)訪問 logout.jsp 頁面,而 logout.jsp 頁面中的 session.invalidate() 語句會(huì)使當(dāng)前 Session 失效,從而觸發(fā) HttpSession 對象的銷毀事件并調(diào)用監(jiān)聽器 OnlineListener 中的 sessionDestroyed() 方法,使統(tǒng)計(jì)用戶數(shù)量的 count 變量減 1。

然后,刷新其余的瀏覽器窗口,此時(shí),各個(gè)瀏覽器窗口中顯示的結(jié)果如圖 2 所示。

圖 2 logout.jsp頁面

從圖 2 中可以看出,谷歌瀏覽器中的用戶已被注銷,而其余兩個(gè)瀏覽器窗口中的在線人數(shù)顯示為2。

需要注意的是,如果直接關(guān)閉圖 2 所示的某個(gè)瀏覽器窗口或保持瀏覽器窗口不刷新,與之對應(yīng)的 HttpSession 對象會(huì)在 2 分鐘之后才被銷毀,即統(tǒng)計(jì)的在線人數(shù)的 count 變量會(huì)在 2 分鐘后自動(dòng)減 1。因此,可以說明網(wǎng)站統(tǒng)計(jì)的在線人數(shù)并不是真正意義上的并發(fā)訪問人數(shù),而是指某一個(gè)時(shí)間段內(nèi)的訪問人數(shù)。

全部教程
主站蜘蛛池模板: 天天色天天操天天射 | 91精品一区二区三区在线播放 | 天天色天天操天天射 | 456极品嫩模在线视频 | 成人高清在线 | 日韩深夜 | 丁香综合 | 国产精品黄在线观看免费网站 | 一级黄色片中国 | 国产成人毛片毛片久久网 | 波多野结衣在线观看一区二区三区 | 最近中文字幕2019高清8? | 人人搞人人爽 | 亚洲欧美日韩在线不卡中文 | 免费观看黄色 | 日日摸夜夜添夜夜 | 欧美三级日韩 | 国产私人影院 | 亚洲欧美日韩中字综合 | 国产在线观看99 | 大胸美女被强吻胸动态图片 | 国产日产欧产精品精品推荐在线 | 欧美最新一区二区三区四区 | 国产精品久久久尹人香蕉 | 在线视频一二三区 | 亚洲国产欧美另类 | 夜夜cao | 美女啪啪网站又黄又免费 | 秋霞手机入口二日韩区 | 国产精品天干天干 | 亚洲国产精品免费观看 | 免费精品一区二区三区在线观看 | 欧美精品一线二线大片 | 国产亚洲精品激情都市 | 中文字幕日本精品一区二区三区 | 久久线看观看精品香蕉国产 | 国产免费理论片在线观看 | 久热这里只精品热在线观看 | 国产女人伦码一区二区三区不卡 | 中文字幕在线观看网站 | 日p免费视频 |