JSP点击计数器

以下内容引用自http://wiki.jikexueyuan.com/project/jsp/hits-counter.html

一个点击计数器能得知关于网站某个特定页面的访问量。假设人们第一次登陆主页,通常在index.jsp页面上设置一个点击计数器。

可以使用Application隐式对象和相关方法getAttribute()和setAttribute()实现一个点击计数器。

这个对象通过其整个生命周期来表示此JSP页面。初始化这个对象时创建JSP页面,当此JSP页面被jspDestroy()方法删除时该对象也被删除。

以下是在应用层设置变量的语法:

application.setAttribute(String Key, Object Value);

可以使用上述的方法设置点击计数器的变量或者重置相同的变量。接下来描述的是一个方法,该方法是读取先前方法设置的变量。

application.getAttribute(String Key);

每次用户访问网页,可以读取点击计数器的当前值,增加1并且再次设置点击计数器作为以后使用。

示例:

这个例子展示了如何使用JSP来统计一个特定的页面的点击量。如果想计算网站点击量,那么将不得不在所有JSP页面包含相同的代码。

<%@ page import="java.io.*,java.util.*" %>

<html>
<head>
<title>Applcation object in JSP</title>
</head>
<body>
<%
    Integer hitsCount = (Integer)application.getAttribute("hitCounter");
    if( hitsCount ==null || hitsCount == 0 ){
       /* First visit */
       out.println("Welcome to my website!");
       hitsCount = 1;
    }else{
       /* return visit */
       out.println("Welcome back to my website!");
       hitsCount += 1;
    }
    application.setAttribute("hitCounter", hitsCount);
%>
<center>
<p>Total number of visits: <%= hitsCount%></p>
</center>
</body>
</html>

现在将上面的代码放在main.jsp中,并且使用URL:http://localhost:8080/main.jsp来调用此JSP。每当刷新该页面时,这将显示的点击计数器值会增加。可以尝试使用不同的浏览器访问该网页,会发现每次点击计数器将增加,显示的结果如下:

计数器重置

如果重新启动应用程序如Web服务器,这将重置应用程序变量,点击计数器将重置为零。为了避免这种损失,可以用下面专业的方法实现点击计数器:

  • 定义一个带有单一计数的数据库表,叫做点击量。设置它的值为0。
  • 每次点击,读取该表得到点击量的值。
  • 点击量加1,更新该表中的值。
  • 显示点击计数器的新值作为总页面的点击量。
  • 如果想计算所有页面的点击量,对所有的页面实现上面的逻辑。

测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test14

时间: 2025-01-07 18:47:41

JSP点击计数器的相关文章

Servlet实现点击计数器

以下内容引用自http://wiki.jikexueyuan.com/project/servlet/hits-counter.html: 一.Web页面的点击计数器 很多时候,可能有兴趣知道网站的某个特定页面上的总点击量.使用Servlet来计算这些点击量是非常简单的,因为一个Servlet的生命周期是由它运行的容器控制的. 以下是基于Servlet生命周期实现一个简单的页面点击计数器需要的步骤: 在init()方法中初始化一个全局变量. 每次调用doGet()或doPost()方法时,增加全

[LeetCode] Design Hit Counter 设计点击计数器

Design a hit counter which counts the number of hits received in the past 5 minutes. Each function accepts a timestamp parameter (in seconds granularity) and you may assume that calls are being made to the system in chronological order (ie, the times

关于laui 弹窗使用弹窗中jsp点击按钮不能用小问题

在laui 弹窗使用中弹窗中jsp点击按钮不能用,但是单独访问弹窗的jsp页面时,未报错,也没有出现问题,点击按钮可以使用 问题解决:错误原因,在使用弹窗页面中,自定义了<span> 的样式,出现了样式冲突问题 解决:更改样式 原文地址:https://www.cnblogs.com/jsbk/p/9459667.html

JSP点击表头排序

table.html <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="tablesortT.js"></script> <link type="text/css" rel=&qu

商务系统的构造思路(无源码!)+如何用jsp实现点击单选框内容显示在另一个jsp页面

敲码经验总结: 之前犯了一个错误就是,没有从底层开始学起,有啥问题,就直接博客园找源码,去CSDN找源代码,看到代码就复制粘贴,结果从新梳理知识点的时候,貌似除了复制粘贴,印象深刻的知识啥也没学到. 看来代码这些东西还是得多敲多总结才有效,不要害怕从底层开始学起,因为没有底层的知识作为支撑,即使你能做出效果也不知道如何做出来,万不可知其然而不知其所以然. 好了,敲码经验总结结束了,现在到了知识点回顾: 总纲分成两个部分: 一.总体商务平台的构思 二.实现JSP点击单选按钮,内容显示到JSP里 细

在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别

jsp中常用的几个内置对象: 一.request对象 主要作用:  (1)获取请求页面的信息   比如:request.getParameter("参数名");  (2)获取客户端的信息   比如:request.getRemoteAddr();//获取客户端的IP地址.  (3)处理乱码   比如:request.setCharacterEncoding("UTF-8"); 二.response对象 主要作用:  (1)请求重定向(客户端跳转)  response

多个jsp页面共享一个js对象的超级方法

一个jsp页面为A.jsp,在A.jsp中点击一个按钮打开另一个B.jsp页面.思路如下: 在A.jsp打开B.jsp的事件中,写入如下代码: 1 2 window.top['_CACHE'] = chatFrdList; window.top['_CACHE'][frdUserId] = frdUserId; 其中,chatFrdList定义为var chatFrdList = new Object(); frdUserId为一个用户的id. 那么,在B.jsp的一个事件中,就可以执行下面的操

jsp中的路径与跳转

在jsp(serlvet)中,页面的"变换"有两种方式,第一重定向,第二转发: 先说重定向,它的调用方式是这样的 response.sendredirect("uri"); 特点就是 转换后的uri地址会在地址栏显示不过之前的request里的数据不能传送给新的页面# 重定向就是,让服务器再发一个请求# 如下图,浏览器看到response里面的sendredirect,就会重新发一个请求,那么之前的请求所带的数据自然就没有了# 转发: 实现方式是这样的: Reque

java web学习笔记-jsp篇

转载自:http://www.cnblogs.com/happyfans/archive/2015/03/17/4343571.html 1.java web简介 1.1静态页面与动态页面   表现形式 所需技术 静态网页 网页内容固定,不会更新 html,css 动态网页 网页内容由程序动态显示,自动更新 html,css,DB,java/c#/php,javascript,xml,主流的动态网页脚本(jsp,asp.net,php) 1.2搭建java web开发环境 jdk1.7+tomc