以下内容引用自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

最新文章

  1. CC2540自己的配置文件
  2. Linux中的用户和用户组
  3. Xcode 7.0升级后的bitcode
  4. JS数组类型检测
  5. poj 1141 区间dp+递归打印路径
  6. /proc/cpuinfo zz
  7. Hibernate的Restrictions用法
  8. C. Tavas and Karafs 二分查找+贪心
  9. AndroidManifest.xml解释说明和android的启动过程
  10. 环境搭建之maven分布式系统
  11. Java基础语法学习(1)switch...case
  12. auto tool: make -2014-1210-0001
  13. js-call、apply
  14. Python 的枚举 Enum
  15. spring boot + mybatis + druid
  16. V-bind详细使用
  17. JQuery未来元素事件监听写法
  18. Kotlin中构造方法的参数var val 和 什么都没有的区别
  19. .net core使用配置文件
  20. Unity的几个特殊文件夹

热门文章

  1. Java数据类型和MySql数据类型对应一览 [转]
  2. select 1浅析
  3. 在Eclipse中用Maven打包jar包--完整版
  4. Jmeter中之各种乱码问题解决方案
  5. java.math.BigDecimal类multiply的使用
  6. Seating Arrangement
  7. C# 實現文件壓縮-- 背景:服務器Log.txt 過多,佔用過多硬盤空間,壓縮備份后節省空間資源
  8. CAD参数绘制块引用对象(com接口)
  9. C# 如何发送Http请求
  10. 了解Java密码扩展的基础