Servlets-hits-counter
サーブレット-ヒットカウンター
Webページのヒットカウンター
多くの場合、あなたはあなたのウェブサイトの特定のページでのヒットの総数を知ることに興味があるでしょう。 サーブレットのライフサイクルは、実行するコンテナによって制御されるため、サーブレットを使用してこれらのヒットをカウントするのは非常に簡単です。
以下は、サーブレットライフサイクルに基づく単純なページヒットカウンタを実装するために実行する手順です。
- init()メソッドでグローバル変数を初期化します。
- doGet()またはdoPost()メソッドが呼び出されるたびにグローバル変数を増やします。
- 必要に応じて、データベーステーブルを使用して、グローバル変数の値をdestroy()メソッドに格納できます。 この値は、次回サーブレットが初期化されるときにinit()メソッド内で読み取ることができます。 この手順はオプションです。
- セッション内で一意のページヒットのみをカウントする場合は、isNew()メソッドを使用して、そのセッション内で同じページが既にヒットしているかどうかを確認できます。 この手順はオプションです。
- グローバルカウンタの値を表示して、Webサイトでのヒットの総数を表示できます。 このステップもオプションです。
ここでは、Webコンテナが再起動されないと想定しています。 再起動するか、サーブレットを破棄すると、ヒットカウンターはリセットされます。
例
この例では、単純なページヒットカウンタを実装する方法を示します-
次に、上記のサーブレットをコンパイルして、web.xmlに次のエントリを作成します。
Now call this servlet using URL http://localhost:8080/PageHitCounter. This would increase counter by one every time this page gets refreshed and it would display following result −
Many times you would be interested in knowing total number of hits on your whole website. This is also very simple in Servlet and we can achieve this using filters.
Following are the steps to be taken to implement a simple website hit counter which is based on Filter Life Cycle −
- Initialize a global variable in init() method of a filter.
- Increase global variable every time doFilter method is called. *If required, you can use a database table to store the value of global variable in destroy() method of filter. This value can be read inside init() method when filter would be initialized next time. This step is optional.
Here I’m assuming that the web container will not be restarted. If it is restarted or servlet destroyed, the hit counter will be reset.
Example
This example shows how to implement a simple website hit counter −
Now let us compile the above servlet and create the following entries in web.xml
Now call any URL like URL http://localhost:8080/. This would increase counter by one every time any page gets a hit and it would display following message in the log −