Java程序,用于监视我使用J2EE创建的网站

时间:2009-06-21 04:27:20

标签: java java-ee

我在J2EE中创建了我的项目..

我想跟踪所有访问我网站的人,以及他们的一些具体信息(例如他们访问的时间,IPAddress等等。)我如何借助java程序来实现这一点,

我可以将信息存储在数据库中。所以我需要的是如何检索访问该网站的人的信息的逻辑。 Tomcat Server ,,我正在使用jsp + Servlets ..

谢谢..

4 个答案:

答案 0 :(得分:3)

AWStats是你真正应该考虑的。针对Access日志运行它。我理解你想要使用Java应用程序,但你真的应该考虑AWStats,因为它是一个成熟的产品。 需要很长时间才能在Java中复制AWStats已经完成的工作。

答案 1 :(得分:0)

查看ServletRequest API。特别要查看getRemoteAddr(),客户端的远程IP地址,getRemoteHost()和getRemotePort()。希望您的大多数客户不会使用代理,或者您将获得代理的信息。

另一种技术是为每个客户端设置唯一的标识cookie,然后每个后续请求都将携带该cookie。这可能是比跟踪IP地址更好的方法。这是关于在servlet中处理cookie的tutorial

Web服务器级别分析工具是另一种方法,根据altCognito的一个很好的建议。

答案 2 :(得分:0)

我们之前的工作也使用了AWStats。管理层和客户似乎对此感到满意。

我想当你说我在J2EE中创建我的项目时,你指的是一个运行在J2EE服务器上的企业应用程序,如Glassfish,JBoss,Weblogic,Geronimo等。

如果您不需要复杂的解决方案,您可以在Tomcat(通常嵌入在大多数J2EE服务器中)中使用servlet filtervalve设置。

答案 3 :(得分:0)

以下是使用HttpServletRequestServletRequestListener获取信息的小例子。

首先,将侦听器添加到web.xml配置文件中。该文件应位于WEB-INF文件夹中。


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

在上述配置中,名为ServletRequestListener的{​​{1}}位于MyRequestListener包中。

接下来,在web包中创建MyRequestListener,如下所示。

web

所有代码都是从HTTP标头打印出属性,参数和信息。如果您需要请求的日期,则可以在输入 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"); } } 时创建java.util.Date

请记住,每次有来自浏览器(或机器人)的HTTP请求时,都会调用requestInitialized() ServletRequestListener,因此最好使用应用程序外部的工具跟踪使用情况。如果您正在寻找外部工具,如果您的网络配置不允许您使用Google Analytics,则可能需要考虑Google AnalyticsUrchin