2009-06-21 11 views
0

を使用して作られているウェブサイトを監視するために...Javaプログラムの、私はJ2EEに私のプロジェクトをしていたJ2EE

例えば、訪問した時間、IPAddressなど)どのように私はjavaプログラムの助けを借りてこれを行うことができますか?

私はこの情報をデータベースに保存できます。私が必要とするのは、ウェブサイトを訪れた人の情報をどのように取得するのかという論理です。 のTomcatサーバー,,と私は、JSP +サーブレットを使用しています。..

おかげ..

+1

サーブレットを使用していると仮定できますか?どのJava EEサーバーを使用していますか?グラスフィッシュ? JBoss? WebSphere? WebLogic? –

答えて

0

ServletRequest APIをチェックしてください。具体的には、getRemoteAddr()、クライアントのリモートIPアドレス、getRemoteHost()、およびgetRemotePort()を見てください。うまくいけば、あなたのクライアントのほとんどがプロキシを使用しないか、プロキシの情報を得るでしょう。

もう1つの方法は、各クライアントに一意の識別Cookieを設定し、その後のすべての要求がそのCookieを保持することです。これはおそらく、IPアドレスを追跡するよりも優れたアプローチです。サーブレットのクッキーを処理するには、tutorialがあります。

Webサーバーレベルの分析ツールは、altCognitoの素晴らしい提案に従って、別のアプローチです。

+0

私は初心者です。このクラスを示すための小さな例を挙げてください。 – AGeek

3

AWStatsは本当に考慮する必要があります。アクセスログに対して実行します。私はあなたが理解している Javaアプリケーションを使用したいが、それは成熟した製品であるため、実際にはAWStatsを考慮する必要があります。 AWStatsがすでに行っていることは、Javaで複製するのに時間がかかるでしょう。

0

私も前の仕事でを使用しました。管理とクライアントはそれに満足しているようでした。

私はあなたが私がJ2EEに私のプロジェクトをしていた言ったとき、あなたはなどGlassfishのは、JBoss、WebLogicの、ジェロニモ、

ますもしドンなどのJ2EEサーバー上で動作するエンタープライズアプリケーションを意味しているとし洗練された解決策が必要な場合は、通常はほとんどのJ2EEサーバーに組み込まれているTomcatのservlet filterまたはvalveの設定で回避できます。

0

ServletRequestListenerを使用してHttpServletRequestから情報を取得する小さな例です。

まず、リスナーをweb.xml設定ファイルに追加します。このファイルは、WEB-INFフォルダーにあります。 MyRequestListener名前ServletRequestListenerwebパッケージ内に配置され、上記の構成において


    <listener> 
     <description>RequestListener</description> 
     <listener-class>web.MyRequestListener</listener-class> 
    </listener> 

次に、webパッケージにMyRequestListenerを次のように作成します。


package web; 

import javax.servlet.*; 

public class MyRequestListener implements ServletRequestListener { 

    public void requestInitialized(ServletRequestEvent event) { 
     HttpServletRequest request = (HttpServletRequest)event.getServletRequest(); 
     System.out.println("request initialized"); 
     System.out.println("Request Remote Addr = " + request.getRemoteAddr()); 
     System.out.println("Request Remote Host = " + request.getRemoteHost()); 
     System.out.println("Request Remote Port = " + request.getRemotePort()); 
     java.util.Enumeration e = request.getAttributeNames(); 
     while(e.hasMoreElements()) { 
      String attName = (String)e.nextElement(); 
      Object val = request.getAttribute(attName); 
      System.out.println("Request Att (" + attName + ") = " + val.toString()); 
     } 
     e = request.getParameterNames(); 
     while(e.hasMoreElements()) { 
      String paramName = (String)e.nextElement(); 
      Object val = request.getParameter(paramName); 
      System.out.println("Request Param (" + paramName + ") = " + val.toString()); 
     } 
     e = request.getHeaderNames(); 
     while(e.hasMoreElements()) { 
      String headerName = (String)e.nextElement(); 
      Object val = request.getHeader(headerName); 
      System.out.println("Header (" + headerName + ") = " + val.toString()); 
     } 
    } 

    public void requestDestroyed(ServletRequestEvent event) { 
     System.out.println("request destroyed"); 
    } 
} 

すべてのコードは、属性、パラメータ、および情報をHTTPヘッダーから出力します。依頼日が必要な場合は、requestInitialized()と入力してjava.util.Dateを作成することができます。

ブラウザ(またはボット)からHTTPリクエストがあるたびにServletRequestListenerrequestInitialized()が呼び出されるため、アプリケーションの外部にあるツールを使用して使用状況を追跡するほうがよい場合があります。外部ツールをお探しの場合は、Google Analytics、またはUrchinと考えてください。ネットワーク設定でGoogleアナリティクスを使用できない場合は、

関連する問題