jsp 點(diǎn)擊量統(tǒng)計(jì)
有時(shí)候我們需要知道某個(gè)頁面被訪問的次數(shù),這時(shí)我們就需要在頁面上添加頁面統(tǒng)計(jì)器,頁面訪問的統(tǒng)計(jì)一般在用戶第一次載入時(shí)累加該頁面的訪問數(shù)上。
要實(shí)現(xiàn)一個(gè)計(jì)數(shù)器,您可以利用應(yīng)用程序隱式對象和相關(guān)方法getattribute()和setattribute()來實(shí)現(xiàn)。
這個(gè)對象表示jsp頁面的整個(gè)生命周期中。當(dāng)jsp頁面初始化時(shí)創(chuàng)建此對象,當(dāng)jsp頁面調(diào)用jspdestroy()時(shí)刪除該對象。
以下是在應(yīng)用中創(chuàng)建變量的語法:
application.setattribute(string key, object value);
您可以使用上述方法來設(shè)置一個(gè)計(jì)數(shù)器變量及更新該變量的值。讀取該變量的方法如下:
application.getattribute(string key);
在頁面每次被訪問時(shí),你可以讀取計(jì)數(shù)器的當(dāng)前值,并遞增1,然后重新設(shè)置,在下一個(gè)用戶訪問時(shí)就將新的值顯示在頁面上。
實(shí)例演示
該實(shí)例將介紹如何使用jsp來計(jì)算特定頁面訪問的總?cè)藬?shù)。如果你要計(jì)算你網(wǎng)站使用頁面的總點(diǎn)擊量,那么你就必須將該代碼放在所有的jsp頁面上。
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ page import="java.io.*,java.util.*" %> <html> <html> <head> <title>訪問量統(tǒng)計(jì)</title> </head> <body> <% integer hitscount = (integer)application.getattribute("hitcounter"); if( hitscount ==null || hitscount == 0 ){ /* 第一次訪問 */ out.println("歡迎訪問碩編程!"); hitscount = 1; }else{ /* 返回訪問值 */ out.println("歡迎再次訪問碩編程!"); hitscount += 1; } application.setattribute("hitcounter", hitscount); %> <p>頁面訪問量為: <%= hitscount%></p> </body> </html>
現(xiàn)在我們將上面的代碼放置于main.jsp文件上,并訪問http://localhost:8080/testjsp/main.jsp文件。你會(huì)看到頁面會(huì)生成個(gè)計(jì)數(shù)器,在我們每次刷新頁面時(shí),計(jì)數(shù)器都會(huì)發(fā)生變化(每次刷新增加1)。
你也可以通過不同的瀏覽器訪問,計(jì)數(shù)器會(huì)在每次訪問后增加1。如下所示:復(fù)位計(jì)數(shù)器
使用以上方法,在 web 服務(wù)器重啟后,計(jì)數(shù)器會(huì)被復(fù)位為 0,即前面保留的數(shù)據(jù)都會(huì)消失,你可以使用以下幾種方式解決該問題:
- 在數(shù)據(jù)庫中定義一個(gè)用于統(tǒng)計(jì)網(wǎng)頁訪問量的數(shù)據(jù)表 count,字段為 hitcount,hitcount 默認(rèn)值為0,將統(tǒng)計(jì)數(shù)據(jù)寫入到數(shù)據(jù)表中。
- 在每次訪問時(shí)我們讀取表中 hitcount 字段。
- 每次訪問時(shí)讓 hitcount 自增 1。
- 在頁面上顯示新的 hitcount 值作為頁面的訪問量。
- 如果你需要統(tǒng)計(jì)每個(gè)頁面的訪問量,你可以使用以上邏輯將代碼添加到所有頁面上。