`
love~ruby+rails
  • 浏览: 849177 次
  • 性别: Icon_minigender_1
  • 来自: lanzhou
社区版块
存档分类
最新评论

如何统计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.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>的相关配置之前

分享到:
评论

相关推荐

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

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

    详解Java分布式IP限流和防止恶意IP攻击方案

    Java 代码实现了一个access方法,用于判断 limitKey 是否超过了最大访问频次,并提供了一个unlimit方法,用于执行redis decr操作,在某些业务场景可以回退访问频次统计。 二、防止恶意IP攻击 防止恶意IP攻击是非常...

    Springboot过滤器禁止ip频繁访问功能实现

    "Springboot过滤器禁止ip频繁访问功能实现" Springboot过滤器禁止ip频繁访问功能实现是指在Springboot项目中,通过编写一个过滤器来限制ip频繁访问的功能实现。这项功能可以防止恶意ip的访问,保护服务器的安全。 ...

    JAVA-JSP流量统计系统

    5. **地理定位**:通过IP地址识别访问者的地理位置,分析全球用户分布。 ### 四、系统实现技术 1. **Servlet技术**:虽然JSP主要负责视图层,但后台处理逻辑通常由Servlet完成。Servlet处理请求,更新数据库,并将...

    JAVA 开发JSP+SQL网站流量统计管理系统(源代码+论文)

    4. **IP和地理位置信息**:记录访问者的IP地址,并根据IP获取其大概的地理位置信息。 5. **浏览器和设备分析**:统计不同浏览器、操作系统和设备的访问情况,以适应各种用户环境。 6. **异常检测**:监控异常访问...

    潇湘IP来源地址统计 v1.0

    《潇湘IP来源地址统计 v1.0》是一款专门用于统计网站访问来源的软件,它具备高效、精准的特性,能够帮助网站管理员深入了解用户访问行为,优化网站服务。这款工具的核心在于其内置的IP数据库,包含了约240,000条数据...

    网站访问数据采集

    在这个项目中,我们使用Java语言来完成这一任务,结合Servlet技术实现后台数据的查询和处理,旨在创建一个类似网站统计的应用,能够记录和分析网站的PV(页面浏览量)和UV(独立访客数)等核心指标。 首先,让我们...

    明日网站流量统计源码

    5. **IpStat.aspx**: IP统计页面可能用来跟踪和分析独立IP地址,提供关于不同地理位置的访问者的信息,这对于了解网站的地理分布和潜在目标市场很有帮助。 6. **regionStat.aspx**: 区域统计页面可能显示按国家或...

    jsp 网站必备统计系统

    2:综合统计,最近访问,地区分析,地址分析,屏幕大小,来访页面,访问次数,操作系统,当前在线,IP地址,浏览器,年报表,月报表,周报表,历史报表,日报表等 3:可以精确的跟踪统计每一位来访者的IP与在线时间-同一IP在线每隔...

    5dSite多用户网站流量统计系统 Ver1

    2. **访问量统计**:系统能实时或定期统计独立访客数、页面浏览量(PV)、访问次数(UV)等关键指标,帮助评估网站的吸引力和影响力。 3. **来源分析**:分析流量来源,包括直接访问、搜索引擎、社交媒体等,有助于...

    以查看在线人数以及ip地址

    6. **统计工具**:除了自建系统外,还有许多现成的网站统计工具,如Matomo(Piwik)、AWStats等,它们提供了详细的报告,包括访问者数量、IP地址、访问路径等。 7. **分布式系统**:在大型网站或分布式环境中,可能...

    记录用户IP地址的计数器

    这个计数器主要用于跟踪网站或特定页面的访问者数量,通过收集并统计用户IP地址来实现。下面将详细介绍这个主题,包括计数器的工作原理、IP地址的概念、JavaWeb和JSP在其中的作用,以及如何实现这样的功能。 首先,...

    Java 开发--JSP+SQL网站流量统计管理系统(源代码+论文).rar

    《Java开发--JSP+SQL网站流量统计管理系统》是一套基于Java技术和SQL数据库实现的Web应用系统,旨在帮助网站管理员实时监控和分析网站流量。该系统由源代码和相关论文组成,提供了完整的开发实例,有助于Java初学者...

    软件新干线网站流量统计 SQL版

    SQL版》是一款专用于网站流量监测和分析的工具,它能够帮助网站管理员了解网站的日常运营情况,包括每日的页面读取次数和独立IP的访问次数,通过内置的点击计数器功能,可以直观地查看统计信息。这款工具的核心是...

    星光统计系统

    "星光统计系统"是一款专为网站流量分析设计的软件,其主要功能包括统计站点的总访问量、在线人数以及用户使用的操作系统类型,并且能够精确获取访问者的IP地址。这款统计系统的一大亮点在于它采用了防刷新技术,从而...

    JSP网站流量统计系统

    1. **访问量统计**:记录每个页面的访问次数,分析哪些页面最受欢迎。 2. **独立访客统计**:通过Cookie或其他方式识别不同用户,计算独立访问者数量。 3. **用户行为分析**:跟踪用户在网站上的活动路径,了解用户...

    统计一天的访问人数以及总访问数

    - 统计一天的访问人数通常涉及计算独立访客数(UV,Unique Visitors),可以通过IP地址、Cookie或用户代理等标识来区分不同的访问者。 - 总访问数(PV,Page Views)则是统计所有页面被查看的次数,每个页面的每次...

    java关键字。必须记的

    ### Java关键字详解 #### Abstract `abstract` 是Java中的一个关键字,用于定义抽象类或抽象方法。抽象类是不能被实例化的类,主要用于提供子类一个基础模板,并强制子类去实现某些特定的方法。抽象方法是没有实现...

    Java补充实验.doc

    1. **出现次数最多的数**:该问题使用ArrayList存储输入的整数,通过正则表达式去除空格,然后统计每个数出现的次数,最后找出出现次数最多且数值最小的数。这个例子涉及到数据结构、字符串处理和循环。 2. **直方...

    java_icmp_ping

    6. **重复过程**:为了得到更准确的统计,可以多次发送请求并收集响应,然后输出平均往返时间。 项目的源代码可能包含了以下关键类或方法: - `PingSender`:负责构造和发送ICMP报文。 - `PacketListener`:处理...

Global site tag (gtag.js) - Google Analytics