我在J2EE中创建了我的项目..
我想跟踪所有访问我网站的人,以及他们的一些具体信息(例如他们访问的时间,IPAddress等等。)我如何借助java程序来实现这一点,
我可以将信息存储在数据库中。所以我需要的是如何检索访问该网站的人的信息的逻辑。 Tomcat Server ,,我正在使用jsp + Servlets ..
谢谢..
答案 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 filter或valve设置。
答案 3 :(得分:0)
以下是使用HttpServletRequest
从ServletRequestListener
获取信息的小例子。
首先,将侦听器添加到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 Analytics或Urchin。