快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱乐备用:如何统计JAVA网站访问次数并获得访问者IP



简言之,假如不用第三方供给的接口

那最好的办理规划应该是当SESSION树马上sessionCreated(),在造访总数和当前在耳目数上+1

当SESSION销毁时sessionDistroyed(),在耳目数-1

核心措施是使用Listener监听的各类接口

我把代码(主要部分)贴鄙人面

此段代码我亲身应用过,没有问题

但由于承袭了接口,有些未应用的措施也要弥补进去,详细要领比如在MyEclipse中可以靠点差错,ADD UNIMPLEMENTED METHOD实现

package com.eaie.system;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.和记娱乐备用PrintWriter;

import java.net.和记娱乐备用MalformedURLException;

import java.net.URL;

import java.util.Enumeration;

import java.util.Set;

import javax.servlet.RequestDispatcher;

import javax.servlet.Servlet;

import javax.servlet.Servle和记娱乐备用tContext;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletException;

import javax.servlet.ServletRequestEvent;

import javax.servlet.ServletRequestListener;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSessionActivationListener;

import javax.servlet.http.HttpS和记娱乐备用essionEvent;

import javax.servlet.http.HttpSessionListener;

public class SessionListener implements HttpSessionActivationListener,

HttpSessionListener, ServletContext, ServletRequestListener {

ServletContext context;

int onLineUserNum = 0;

int visitNum = 0;

HttpServletRequest request;

public void sessionDidActivate(HttpSessionEvent session) {

log("seesionDidActive("+session.getSession().getId()+")");

}

public void sessionWillPassivate(HttpSessionEvent session) {

log("seesionWillPassivate("+session.getSession().getId()+")");

}

public void sessionCreated(HttpSessionEvent event) {

onLineUserNum++;

visitNum ++;

String ip = request.getRemoteAddr();

log("sessionCreated('"+event.getSession().getId()+"'),-->IP:"+ip);

context.setAttribute("onLineUserNum", new Integer(onLineUserNum));

context.setAttribute("visitNum", new Integer(visitNum));

}

public void sessionDestroyed(HttpSessionEvent event) {

if (onLineUserNum>0){

onLineUserNum--;

}

String ip = request.getRemoteAddr();

log("sessionDestroyed('"+event.getSession().getId()+"'),-->IP:"+ip);

context.setAttribute("onLineUserNum", new Integer(onLineUserNum));

}

public void contextDestroyed(ServletContextEvent sce){

log("contextDestroyed-->ServletContext is destroyed");

this.context = null;

}

public void contextInitialized(ServletContextEvent sce){

this.context = sce.getServletContext();

log("contextDestroyed-->ServletContext is initi和记娱乐备用alized");

}

public int getUserOnline(){

return this.onLineUserNum;

}

public void log(String message) {

PrintWriter out = null;

try{

out = new PrintWriter(new FileOutputStream("c:\\eaieLogger.txt",true));

out.println(new java.util.Date().toLocaleString()+"::From SessionListener:"+message);

out.println("Totle visit number:"+this.visitNum+" and current online num: "+onLineUserNum);

out.println("=================================");

out.close();

}catch(Exception e){

e.printStackTrace();

out.close();

}

}

public void requestInitialized(ServletRequestEvent event) {

request = (HttpServletRequest)event.getServletRequest();

}

//省略其他措施

}

这个法度榜样必要在web.xml中设置设置设备摆设摆设:

com.eaie.system.SessionListener

必要留意的是LISTENR的位置,必须在的相关设置设置设备摆设摆设之后,在的相关设置设置设备摆设摆设之前

您可能还会对下面的文章感兴趣: