JSPでヒットカウンターを実装する方法をわかりやすく解説
ヒットカウンターとは?
ヒットカウンターとは、Webサイトの特定ページが閲覧された回数(アクセス数)を表示するための仕組みです。通常は、訪問者が最初にアクセスするトップページ(index.jspなど)に設置されることが多いでしょう。
Application暗黙オブジェクトを使った実装方法
JSPでヒットカウンターを実装するには、application暗黙オブジェクトと、それに関連付けられたgetAttribute()メソッドおよびsetAttribute()メソッドを利用します。
applicationオブジェクトは、JSPページのライフサイクル全体を通じて存在するオブジェクトです。JSPページが初期化されるときに生成され、jspDestroy()メソッドによってJSPページが破棄されるときに削除されます。
アプリケーションレベルでの変数設定
アプリケーションレベルで変数を設定するには、以下の構文を使用します。
application.setAttribute(String Key, Object Value);
このメソッドを使って、ヒットカウンター用の変数を設定したり、値をリセットしたりできます。また、前述のメソッドで設定した変数を読み取るには、次のメソッドを使用します。
application.getAttribute(String Key);
カウントアップの仕組み
ユーザーがページにアクセスするたびに、現在のカウンター値を読み取り、1つ増やしてから再度保存します。これにより、アクセスのたびにカウントが自動的に更新されていきます。
サンプルコード
以下は、JSPを使って特定ページの総アクセス数をカウントする例です。サイト全体の総アクセス数を計測したい場合は、同じコードをすべてのJSPページに組み込む必要があります。
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Application object in JSP</title>
</head>
<body>
<%
Integer hitsCount = (Integer)application.getAttribute("hitCounter");
if( hitsCount ==null || hitsCount == 0 ) {
/* 初回アクセス */
out.println("Welcome to my website!");
hitsCount = 1;
} else {
/* 再アクセス */
out.println("Welcome back to my website!");
hitsCount += 1;
}
application.setAttribute("hitCounter", hitsCount);
%>
<center>
<p>Total number of visits: <%= hitsCount%></p>
</center>
</body>
</html>動作確認
上記のコードをmain.jspとして保存し、ブラウザから https://localhost:8080/main.jsp にアクセスしてみましょう。ページを更新するたびにカウンターの値が増えていくのが確認できます。異なるブラウザからアクセスしても、アクセスごとにカウントが増加し続けます。
実行結果
Welcome back to my website! Total number of visits: 12
補足:より実践的なカウンターにするには
この方法では、サーバーを再起動するとカウント値がリセットされてしまう点に注意が必要です。アクセス数を永続的に管理したい場合は、データベースやファイルへの保存と組み合わせるのが一般的です。また、複数ユーザーが同時にアクセスした際の競合を防ぐため、synchronizedブロックやAtomicIntegerといった同期処理を導入することも検討するとよいでしょう。
-
JSPでCookieを設定する方法を3ステップでわかりやすく解説
JSPでCookieを設定する基本の流れ JSPでCookieを扱う場合、基本的には次の3つのステップで設定を行います。 Cookieオブジェクトを作成する 有効期限(最大生存期間)を設定する HTTPレスポンスヘッダーにCookieを追加して送信する それぞれの手順を順番に見ていきましょう。 ステップ1:Cookieオブジェクトの作成 Cookieクラスのコンストラクタに、Cookieの名前と値(どちらも文字列)を引数として渡してオブジェクトを生成します。 Cookie cookie = new Cookie("key","value"); 注意点
-
JSPでヒットカウンターを実装する方法:サーバー再起動でもカウントデータを失わない対策
はじめに JSPでヒットカウンターをアプリケーション変数として実装した場合、Webサーバー(アプリケーション)を再起動すると、その変数はリセットされ、カウント値はゼロに戻ってしまいます。このデータ損失を防ぐには、データベースを利用してカウント値を永続化する仕組みを導入するのが効果的です。 データベースを使ったヒットカウンターの実装手順 カウント用テーブルを作成する: データベースに「hitcount」という1つのカウント値を持つテーブルを定義し、初期値として0を設定しておきます。 アクセスごとに現在の値を読み取る: ページがアクセスされるたびに、テーブルから現在のhitcountの値を取得