JSP アクセス数統計
あるページがアクセスされた回数を把握する必要がある場合があります。その場合、ページにアクセスカウンターを追加する必要があります。ページアクセスの統計は通常、ユーザーが最初にページを読み込んだときに、そのページのアクセス数に加算されます。
カウンターを実装するには、アプリケーション暗黙オブジェクトと関連メソッドの getAttribute() および setAttribute() を利用できます。
このオブジェクトはJSPページのライフサイクル全体を表します。JSPページが初期化されたときにこのオブジェクトが作成され、JSPページが jspDestroy() を呼び出したときに削除されます。
アプリケーション内で変数を作成する構文は次のとおりです:
application.setAttribute(String Key, Object Value);
上記のメソッドを使用して、カウンター変数を設定し、その変数の値を更新できます。この変数を読み取るメソッドは次のとおりです:
application.getAttribute(String Key);
ページがアクセスされるたびに、カウンターの現在値を読み取り、1増やしてから再設定できます。次のユーザーがアクセスしたときに、新しい値がページに表示されます。
サンプルデモ
この例では、JSPを使用して特定のページへの総アクセス数を計算する方法を紹介します。Webサイトのページの総クリック数を計算する場合は、このコードをすべてのJSPページに配置する必要があります。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<html>
<html>
<head>
<title>访问量统计</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>
次に、上記のコードを main.jsp ファイルに配置し、アクセスします。http://localhost:8080/testjsp/main.jspそのファイルにアクセスすると、ページにカウンターが生成されるのがわかります。ページを更新するたびにカウンターが変わります(更新ごとに1ずつ増加します)。
異なるブラウザーからアクセスすることもでき、カウンターはアクセスのたびに1増加します。次のようになります:
カウンターをリセット
上記の方法では、Webサーバーを再起動するとカウンターが0にリセットされ、それまで保持されていたデータがすべて消えてしまいます。この問題を解決するには、次の方法を使用できます:
- データベースに、Webページのアクセス数を集計するためのデータテーブル count を定義します。フィールドは hitcount で、hitcount のデフォルト値は0です。統計データをデータテーブルに書き込みます。
- アクセスのたびに、テーブルの hitcount フィールドを読み取ります。
- アクセスのたびに hitcount を1ずつインクリメントします。
- ページに新しい hitcount 値をページのアクセス数として表示します。
- 各ページのアクセス数を集計する必要がある場合は、上記のロジックを使用してコードをすべてのページに追加できます。