日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何统计JAVA网站访问次数并获得访问者IP

發(fā)布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何统计JAVA网站访问次数并获得访问者IP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡言之,如果不用第三方提供的接口

  那最好的解決方案應該是當SESSION建立時sessionCreated(),在訪問總數(shù)和當前在線人數(shù)上+1

  當SESSION銷毀時sessionDistroyed(),在線人數(shù)-1

  核心方法是利用Listener監(jiān)聽的各種接口

  我把代碼(主要部分)貼在下面

  此段代碼我親自使用過,沒有問題

  但因為繼承了接口,有些未使用的方法也要補充進去,具體方式比如在MyEclipse中可以靠點錯誤,ADD UNIMPLEMENTED METHOD實現(xiàn)

  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.ServletContext;

  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.HttpSessionEvent;

  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 initialized");

  }

  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中配置:

  <listener>

  <listener-class>com.eaie.system.SessionListener</listener-class>

  </listener>

  需要注意的是LISTENR的位置,必須在<FILTER>的相關配置之后,在<SERVLET>的相關配置之前

轉載于:https://www.cnblogs.com/only4agile/archive/2009/10/05/1578173.html

總結

以上是生活随笔為你收集整理的如何统计JAVA网站访问次数并获得访问者IP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。