鍍金池/ 教程/ Java/ JSP - 點(diǎn)擊計(jì)數(shù)器
JSP - 異常處理
JSP - 標(biāo)準(zhǔn)標(biāo)簽庫
JSP - 操作
JSP - 語法
JSP - 概述
JSP - 過濾器
JSP - 文件上傳
JSP - 指令
JSP - 訪問數(shù)據(jù)庫
JSP - 國(guó)際化
JSP - 隱式對(duì)象
JSP - 面試問題
JSP - 體系結(jié)構(gòu)
JSP - 發(fā)送電子郵件
JSP - 客戶端請(qǐng)求
JSP - 服務(wù)器響應(yīng)
JSP - 表達(dá)式語言
JSP - 自定義標(biāo)簽
JSP - HTTP 狀態(tài)碼
JSP - 調(diào)試
JSP - XML 數(shù)據(jù)
JSP - 有用的資源
JSP - 處理日期
JSP - 生命周期
JSP - 會(huì)話跟蹤
JSP - JavaBeans
JSP - 自動(dòng)刷新
JSP - 頁面重定向
JSP - 點(diǎn)擊計(jì)數(shù)器
JSP - 安全性
JSP - Cookies 處理
JSP - 環(huán)境配置
JSP - 表單處理

JSP - 點(diǎn)擊計(jì)數(shù)器

一個(gè)點(diǎn)擊計(jì)數(shù)器告訴你關(guān)于網(wǎng)站某個(gè)特定頁面的訪問量。假設(shè)人們第一次登陸你的主頁,通常你在 index.jsp 頁面上設(shè)置一個(gè)點(diǎn)擊計(jì)數(shù)器。

你可以使用 Application 隱式對(duì)象和相關(guān)方法 getAttribute() 和 setAttribute() 實(shí)現(xiàn)一個(gè)點(diǎn)擊計(jì)數(shù)器。

這個(gè)對(duì)象通過其整個(gè)生命周期來表示此 JSP 頁面。初始化這個(gè)對(duì)象時(shí)創(chuàng)建 JSP 頁面,當(dāng)此 JSP 頁面被 jspDestroy() 方法刪除時(shí)該對(duì)象也被刪除。

以下是在應(yīng)用層設(shè)置變量的語法:

application.setAttribute(String Key, Object Value);

你可以使用上述的方法設(shè)置點(diǎn)擊計(jì)數(shù)器的變量或者重置相同的變量。接下來描述的是一個(gè)方法,該方法是讀取先前方法設(shè)置的變量。

application.getAttribute(String Key);

每次用戶訪問網(wǎng)頁,你可以讀取點(diǎn)擊計(jì)數(shù)器的當(dāng)前值,增加 1 并且再次設(shè)置點(diǎn)擊計(jì)數(shù)器作為以后使用。

例子

這個(gè)例子展示了如何使用 JSP 來統(tǒng)計(jì)一個(gè)特定的頁面的點(diǎn)擊量。如果你想計(jì)算你的網(wǎng)站點(diǎn)擊量,那么你將不得不在所有 JSP 頁面包含相同的代碼。

<%@ page import="java.io.*,java.util.*" %>

<html>
<head>
<title>Applcation object in JSP</title>
</head>
<body>
<%
    Integer hitsCount = 
      (Integer)application.getAttribute("hitCounter");
    if( hitsCount ==null || hitsCount == 0 ){
       /* First visit */
       out.println("Welcome to my website!");
       hitsCount = 1;
    }else{
       /* return visit */
       out.println("Welcome back to my website!");
       hitsCount += 1;
    }
    application.setAttribute("hitCounter", hitsCount);
%>
<center>
<p>Total number of visits: <%= hitsCount%></p>
</center>
</body>
</html>

現(xiàn)在將上面的代碼放在 main.jsp 中,并且使用 URL http://localhost:8080/main.jsp 來調(diào)用此 JSP。每當(dāng)你刷新該頁面時(shí),這將顯示的點(diǎn)擊計(jì)數(shù)器值會(huì)增加。你可以嘗試使用不同的瀏覽器訪問該網(wǎng)頁,你會(huì)發(fā)現(xiàn)每次點(diǎn)擊計(jì)數(shù)器將增加,顯示的結(jié)果如下:

Welcome back to my website!

Total number of visits: 12

計(jì)數(shù)器重置

如果你重新啟動(dòng)你的應(yīng)用程序如 Web 服務(wù)器,這將重置你的應(yīng)用程序變量,點(diǎn)擊計(jì)數(shù)器將重置為零。為了避免這種損失,你可以用下面專業(yè)的方法實(shí)現(xiàn)點(diǎn)擊計(jì)數(shù)器:

  • 定義一個(gè)帶有單一計(jì)數(shù)的數(shù)據(jù)庫表,我們叫做點(diǎn)擊量。設(shè)置它的值為 0。

  • 每次點(diǎn)擊,讀取該表得到點(diǎn)擊量的值。

  • 點(diǎn)擊量加 1,更新該表中的值。

  • 顯示點(diǎn)擊計(jì)數(shù)器的新值作為總頁面的點(diǎn)擊量。

  • 如果你想計(jì)算所有頁面的點(diǎn)擊量,對(duì)所有的頁面實(shí)現(xiàn)上面的邏輯。