页面访问量和网站访问量的统计

2023-11-05

网页点击计数器

  

以下是实现一个简单的基于 Servlet 生命周期的网页点击计数器需要采取的步骤:

  • 在 init() 方法中初始化一个全局变量。
  • 每次调用 doGet() 或 doPost() 方法时,都增加全局变量。
  • 如果需要,您可以使用一个数据库表来存储全局变量的值在 destroy() 中。在下次初始化 Servlet 时,该值可在 init() 方法内被读取。这一步是可选的。
  • 如果您只想对一个 session 会话计数一次页面点击,那么请使用 isNew() 方法来检查该 session 会话是否已点击过相同页面。这一步是可选的。
  • 您可以通过显示全局计数器的值,来在网站上展示页面的总点击量。这一步是可选的。

在这里,我们假设 Web 容器将无法重新启动。如果是重新启动或 Servlet 被销毁,计数器将被重置。

实例

本实例演示了如何实现一个简单的网页点击计数器:

import java.io.*;
import java.sql.Date;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class PageHitCounter extends HttpServlet{
    
  private int hitCount; 
               
  public void init() 
  { 
     // 重置点击计数器
     hitCount = 0;
  } 

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");
      // 该方法在 Servlet 被点击时执行 
      // 增加 hitCount 
      hitCount++; 
      PrintWriter out = response.getWriter();
      String title = "总点击量";
      String docType =
      "<!doctype html public \"-//w3c//dtd html 4.0 " +
      "transitional//en\">\n";
      out.println(docType +
        "<html>\n" +
        "<head><title>" + title + "</title></head>\n" +
        "<body bgcolor=\"#f0f0f0\">\n" +
        "<h1 align=\"center\">" + title + "</h1>\n" +
        "<h2 align=\"center\">" + hitCount + "</h2>\n" +
        "</body></html>");

  }
  public void destroy() 
  { 
      // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库
  } 
} 

现在让我们来编译上面的 Servlet,并在 web.xml 文件中创建以下条目:

....
 <servlet>
     <servlet-name>PageHitCounter</servlet-name>
     <servlet-class>PageHitCounter</servlet-class>
 </servlet>

 <servlet-mapping>
     <servlet-name>PageHitCounter</servlet-name>
     <url-pattern>/PageHitCounter</url-pattern>
 </servlet-mapping>
....

现在通过访问 URL http://localhost:8080/PageHitCounter 来调用这个 Servlet。这将会在每次页面刷新时,把计数器的值增加 1,结果如下所示:

总点击量

6


网站点击计数器

很多时候,您可能有兴趣知道整个网站的总点击量。在 Servlet 中,这也是非常简单的,我们可以使用过滤器做到这一点。

以下是实现一个简单的基于过滤器生命周期的网站点击计数器需要采取的步骤:

  • 在过滤器的 init() 方法中初始化一个全局变量。
  • 每次调用 doFilter 方法时,都增加全局变量。
  • 如果需要,您可以使用一个数据库表来存储全局变量的值在过滤器的 destroy() 中。在下次初始化过滤器时,该值可在 init() 方法内被读取。这一步是可选的。

在这里,我们假设 Web 容器将无法重新启动。如果是重新启动或 Servlet 被销毁,点击计数器将被重置。

实例

本实例演示了如何实现一个简单的网站点击计数器:

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

public class SiteHitCounter implements Filter{
    
  private int hitCount; 
               
  public void  init(FilterConfig config) 
                    throws ServletException{
     // 重置点击计数器
     hitCount = 0;
  }

  public void  doFilter(ServletRequest request, 
              ServletResponse response,
              FilterChain chain) 
              throws java.io.IOException, ServletException {

      // 把计数器的值增加 1
      hitCount++;

      // 输出计数器
      System.out.println("网站访问统计:"+ hitCount );

      // 把请求传回到过滤器链
      chain.doFilter(request,response);
  }
  public void destroy() 
  { 
      // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库
  } 
} 

现在让我们来编译上面的 Servlet,并在 web.xml 文件中创建以下条目:

....
<filter>
   <filter-name>SiteHitCounter</filter-name>
   <filter-class>SiteHitCounter</filter-class>
</filter>

<filter-mapping>
   <filter-name>SiteHitCounter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

....

现在访问网站的任意页面,比如 http://localhost:8080/。这将会在每次任意页面被点击时,把计数器的值增加 1,它会在日志中显示以下消息:

网站访问统计: 1
网站访问统计: 2
网站访问统计: 3
网站访问统计: 4
网站访问统计: 5
..................


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

页面访问量和网站访问量的统计 的相关文章

  • Cookie:使用Cookie实现记住用户的账号和密码

    目录 练习一 java web jsp 中使用cookie记住用户的账号和密码 练习二 java web jsp servert 中使用cookie记住用户的账号和密码 进阶例题 java web中使用cookie记住用户的账号和密码 练习
  • github使用,上传,上传失败解决方案----03

    1 首先登上github GitHub Where the world builds software GitHub 发现登不上 在设置中找到代理关掉他或者打开不断切换 我就是这么试的他就可以登录了 2 创建账号 首先创建账号 根据提示下一
  • JSP、JSTL标签

  • Xception论文解读

  • Java正则表达式验证电话号码

    在注册会员时 经常需要输入电话号码 电话号码是指手机号码或者固定电话 如果输入的内容不合法 则会向用户输出提示 本实例模拟实现电话号码的验证功能 接收用户在控制台输入的电话号码 然后进行判断 并将结果输出 在这里使用 Java正则表达式 一
  • Filter过滤器实现权限拦截

    一 要求 用户登陆之后才能进入主页 用户注销之后不能进入首页 二 思路 用户登陆之后 向session中放入用户的数据 进入主页的时候要判断用户是否已经登陆 在过滤器中实现 public void doFilter ServletReque
  • 在springboot 中配置使用servlet

    文章目录 1 前言 2 servlet 3 springboot配置 4 启动项目 5 UrlMapping设置 6 Filter 7 Listener 8 总结 1 前言 还记得 说到web项目 最早接触的就是servlet 实际上SSH
  • 进阶java大师之路,泛型在hashmap上的灵活运用

    由于 公司的试用的框架上 存在大量的hashmap的创建 产生大量的I O 以及内存的消耗 所以 抽了点时间 看书 effective java 这本书 同时 也从项目的作者 framework 上学习 吸取 最终写出了 符合生产的方案 存
  • Jenkins部署

    链接 手把手教你用 Jenkins 自动部署 SpringBoot 江南一点雨 jekins 江南一点雨的博客 CSDN博客 bin bash jenkins要在后台执行脚本 需要在脚本前加上BUILD ID dontKillMe BUIL
  • javaweb——Response下载文件

    HttpServletResponse web服务器接收到客户端的http请求 针对这个请求分别创建一个代表请求的HttpServletResponse对象 一个代表响应的HttpServletResponse对象 如果要获取客户端请求过来
  • JavaWeb05(删除&增加&修改功能实现&连接数据库)

    目录 一 实现删除功能 1 1 url如何传参 xx do 参数 参数值 参数名 参数值 1 2 servlet如何拿对应值 根据参数名拿到对应的参数值 String str req getParameter 参数名 1 3 如何询问 nc
  • bean的有效范围和生命周期(scope)

    scope 的取值范围给出了bean的生命周期 存活时间 即scope 取值决定了Tomcat服务器分配给用户的 bean 的有效范围和生命周期 因此需要理解 scope取值的具体意义 下面就JSP动作标记useBean 中scope取值的
  • 解决request.getServletContext()方法报红问题

    getServletContext 方法是Servlet3 0添加的 所以需要引入3 0以上的jar包
  • 纯java实现相片转素描

    1 实例演示图片转素描效果 首先我们来看一下具体的效果 在项目中添加依赖
  • JAVA WEB 中间件为SERVLET(四)

    写一个用户登录部署到tomcat 本地 先找到一个模板 HTML代码复制到本地的项目index jsp中 这个登录模板包含一个JSP 一个JS 三个CSS等文件 这个是index jsp代码
  • Java工具类之SFTP遍历查找指定目录下包含关键字的的所有文件

    一 工具类代码 public class SFTPUtil private transient Logger logger LoggerFactory getLogger this getClass private ChannelSftp
  • jsp+servlet+ajax实现登录

    该案列使用jsp servlet ajax实现登录 页面简洁大方 弹框都是封装的插件 整体案列采用三层的模式 链接数据库方面用的是dbcp的链接池 数据库时mysql 运行效果如下图 下载地址 jsp servlet ajax实现登录案例
  • 5. handle方法详解-handler获取

    文章目录 1 概览 2 handle方法回顾 3 HandlerMappings继承关系 4 getHandlerInternal 4 1 RequestMappingInfoHandlerMapping getHandlerInterna
  • IDEA找不到程序包 和 request.getServletContext()报错Cannot resolve method ‘getServletContext()的解决方法

    重新装了idea和down了项目却一直报错 在调用request getServletContext 的方法时一直报Cannot resolve method getServletContext 的错误 网上查了好多方法 大多数都是在说是s
  • JavaWeb——第五章 Servlet

    第五章 Servlet 一 Servlet简介 1 1 动态资源和静态资源 1 2 Servlet简介 二 Servlet开发流程 2 1 目标 2 2 开发过程 三 Servlet注解方式配置

随机推荐

  • php 微信支付V3接口

    注意事项 1 请求接口签名方式 RSA 用到了API证书序列号 后缀为key pem的密钥文件 cert文件要用java自己生成 具体参考 https developers weixin qq com community develop d
  • mysql安装图解 mysql图文安装教程(详细说明)

    下面的是MySQL安装的图解 用的可执行文件安装的 详细说明了一下 打开下载的mysql安装文件mysql 5 0 27 win32 zip 双击解压缩 运行 setup exe 出现如下界面 mysql安装图文教程1 mysql安装向导启
  • Linux——信号的发送,自己实现结束进程的kill命令

    信号的发送 Linux提供了一种系统调用 2 不是kill命令 kill 可以向指定的进程发送指定的信号 int kill pid t pid int signType signType是要发送的信号 kill方法的pid参数有四种不同的情
  • PID 控制保姆级培训教程下-全国大学生电子设计大赛赛前必备

    紧接上回 PID 控制保姆级培训教程上 全国大学生电子设计大赛赛前必备 http t csdn cn TY4eB 上回介绍到 书接上回 实操设计 干货满满 3 数字控制器的模拟化设计 3 1 数字PID 3 1 1 DDC系统的组成原理 D
  • FastAPI从入门到实战(6)——请求体与嵌套模型

    前面记录的是路径参数和查询参数的内容 那两种形式的数据都不算的发送的数据 都是存在路径中的数据 请求体是客户端发给接口的参数 不存在于路径中 本文就主要记录FastAPI中的请求体应用内容 一个发送请求体的接口 创建一个数据模型 class
  • Linux 使用rpm方式安装最新mysql(5.7.16)步骤以及常见问题解决

    前几天在阿里云买了个服务器 准备自己玩玩 现将最新版mysql 5 7 16 安装步骤 以及遇到问题及解决过程分享如下 第一步 下载rpm包 mysql官网下载 http dev mysql com downloads mysql 但如果你
  • 2021年网络安全省赛--web隐藏信息探索解析(中职组)

    2021年省赛web隐藏信息探索 解析 任务环境说明 Web20200529 服务器场景操作系统 未知 关闭连接 1 通过本地PC中渗透测试平台Kali对服务器场景Web20200529中的网站进行访问 找到登录界面中的FLAG 并将FLA
  • 专属于程序员的知识仓库:开发者导航

    一个专属于开发者的导航网站 收录丰富 内容详实 更新频繁 废话不多说 先上几张图吧 网站还收录了很多惊喜类目 比如最近很火的ChatGPT和AI绘画 开发者导航网至少收录了20多个 大部分都是免魔法 国内直接可以访问的 娱乐区还包括很多影视
  • 金蝶显示服务器异常,金蝶连接云服务器异常怎么回事

    金蝶连接云服务器异常怎么回事 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 ELB的常见异常返回码有400 403 50
  • 派查查 :一个WearOS智能手表系统上的快递查询应用

    目录 前言 项目概述 设计背景 系统架构 接口介绍 即时查询请求 即时查询回复 前言 在学习面向对象程序设计课程的时候 收获颇多 最后的课程报告选题选择了 Android开发 但是安卓手机上好的应用数不胜数 自己不想重蹈覆辙做别人做过不知道
  • 前端常用工具库整理

    功能库 lt lt lt Axios 一个基于 promise 的 HTTP 库 可以用在浏览器和 node js 中 http www axios js com Lodash 一个一致性 模块化 高性能的 JavaScript 实用工具库
  • 小程序使用 svg

    封装组件 components下新建svgIcon文件 wxml
  • node内置模块——Buffer模块(缓冲区)

    文章目录 Buffer 缓冲区 创建Buffer 利用字符串创建buffer Buffer from 使用Buffer方法创建buffer Buffer alloc Buffer allocUnsafe size Buffer元素的操作 B
  • CSS选择器(nth-child)

    nth child 这个选择符括号内可以写 an b a b均为整数 或者关键字 因为工作中有遇到要隐藏列表第三个子元素之后的所有子元素 所以有用到这个选择器 记录一下 1 nth child a 当括号里只写一个数字 比如 list li
  • OSI七层参考模型和数据封装

    OSI七层参考模型和数据封装 一 网络基础原理 1 分层思想 二 OSI七层参考模型 三 TCP IP协议簇和OSI参考模型 1 TCP IP五层模型常见协议 2 ARP是地址解析协议 3 RARP是反地址解析协议 四 PDU协议数据单元数
  • Flash概念简述

    1 Flash全名叫做Flash Memory Flash存储芯片的一种 通过特定的程序可以修改里面的数据 Flash属于非易失性存储设备 Non volatile Memory Device 与此相对应的是易失性存储设备 Volatile
  • RK3568 HDMI EDID处理过程

    一 简介 EDID是什么 EDID的全称是Extended Display Identification Data 扩展显示标识数据 VGA DVI的EDID由主块128字节组成 HDMI的EDID增加扩展块 128字节 扩展块的内容主要是
  • Jupyter notebook 如何设定默认的保存目录?

    前言 做智能车的时候 Jupter Notebook的默认保存在可怜的C盘 本来就很紧张的C肯定受不了 要改到别的地方 网上找了一些参考 说变更一下配置地址就可以了 照着做 99 的博客说 设置完了 关闭重启就好了 试了几次 根本不是关闭重
  • Proxmox VE 使用ACME 自动获取证书(DNSPOD)

    前言 PVE中自带了ACME 的支持 但是在国内对DNSPOD的支持似乎不是很好 所以只能采取手动的方式 一 使用步骤 以下步骤均在pve 的管理界面中 打开节点的shell 窗口中执行 安装ACME wget O acme1 sh htt
  • 页面访问量和网站访问量的统计

    网页点击计数器 以下是实现一个简单的基于 Servlet 生命周期的网页点击计数器需要采取的步骤 在 init 方法中初始化一个全局变量 每次调用 doGet 或 doPost 方法时 都增加全局变量 如果需要 您可以使用一个数据库表来存储