12. Servlet 页面点击计数器
来源:互联网 发布:床垫哪个品牌好 知乎 编辑:程序博客网 时间:2024/06/02 06:59
Servlet 页面点击计数器
实现Servlet上某个页面的总点击量,使用 Servlet 来计算这些点击量是非常简单的,因为一个 Servlet 的生命周期是由它运行所在的容器控制的。
以下是实现一个简单的基于 Servlet 生命周期的网页点击计数器需要采取的步骤:
- 在 init() 方法中初始化一个全局变量;
- 每次调用 doGet() 或 doPost() 方法时,都增加全局变量;
- 如果需要,可以在destroy() 中可以使用一个数据库表来存储全局变量的值。在下次初始化 Servlet 时,该值可在 init() 方法内被读取,这样处理可以实现该数据的持久化;
- 如果只想对一个 session 会话计数一次页面点击,那么请使用 isNew() 方法来检查该 session 会话是否已点击过相同页面;
在这里,假设 Web 容器将无法重新启动。如果是重新启动或 Servlet 被销毁,计数器将被重置。
1
public class PageHitCounter extends HttpServlet {
2
private int hitCount;
3
public void init(){
4
hitCount = 0; // 重置点击计数器,如果要实现hitCount的持久化,可以在这里从数据库中读取该数据
5
}
6
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
7
// 增加 hitCount
8
hitCount++;
9
10
response.setContentType("text/html;charset=UTF-8");
11
PrintWriter out = response.getWriter();
12
String docType = "<!DOCTYPE html> \n";
13
out.println(docType +
14
"<html>\n" +
15
"<head><title>Hit Count</title></head>\n" +
16
"<body">\n" +
17
"<h1 align=\"center\">Hit Count</h1>\n" +
18
"<h2 align=\"center\">" + hitCount + "</h2>\n" +
19
"</body></html>");
20
}
21
22
public void destroy() {
23
// 但是如果需要实现hitCount的持久化,可以把 hitCount 的值写入到数据库
24
}
25
26
}
以下是实现一些页面计数器的思路;
网站所有页面的总访问量
使用 Filter 过滤器实现,设置某个过滤器,映射到所有页面(HTML,Servlet,JSP),在该 Filter 的doFilter()过程中 对储存在数据库中的计数值进行增加(也可以将该计数值储存在 web.xml 中<filter><init-param>中);
某个页面的总访问量
如果该页面是Servlet,可以在其 init() 时对计数值进行初始化(从数据库读取),在service()对该计数值进行自增,在destroy()将该计数值写入数据库(如果考虑到数据同步问题,在destory时不直接将计数值写入数据库,而是直接在数据库中对该数据进行自增,以保持数据同步);
如果该页面是 JSP 或 HTML,可以直接使用Filter映射到指定页面实现(也适用与Servlet);
网站的总在线量
通过 HttpSessionListener实现;
OlineCount.java :记录在线信息
(也可以实现为一个记录所有在线人数信息的列表,此时要在OnlineListener实现 HttpSessionAttributeListener后在其 attributeAdded ,attributeRemoved方法进行相应的实现,同时要在负责登录登出的Sevlet进行session添加,删除相应属性 );
1
//应该实现 count 数据的同步性,这里略过
2
public class OnlineCount{
3
private static int count = 0;
4
public static void add(){
5
count ++;
6
}
7
public static void reduce(){
8
count --;
9
}
10
public static int value(){
11
return count;
12
}
13
}
1
public class OnlineListener implements HttpSessionListener{
2
//根据session的建立和销毁进行计数
3
public void sessionCreated(HttpSessionEvent se) {
4
OnlineCount.add();
5
}
6
public void sessionDestroyed(HttpSessionEvent se) {
7
onlineCount.reduce();
8
}
9
}
web.xml 中添加 listener的配置
1
<listener>
2
<listener-class>listener.OnlineListener</listener-class>
3
</listener>
在 Servlet 或 JSP 中要获取在线总人数 直接调用 OnlineCount.value();
阅读全文
0 0
- 12. Servlet 页面点击计数器
- Servlet 点击计数器
- Servlet 点击计数器
- 插件29:点击计数器
- 完美的点击计数器
- 18_Servlet 点击计数器
- servlet_17 点击计数器实例
- servlet 网页计数器代码
- servlet实现网站计数器
- Servlet实现网站计数器
- Servlet实现网站计数器
- 访问页面的计数器
- jsp简单页面计数器
- php页面添加计数器
- 一个漂亮的点击计数器
- filter实现----网站点击计数器
- 网页计数器servlet实现代码
- Servlet(20)网站计数器实现
- Tensorflow常用函数笔记
- 【CQOI2016】手机号码
- A
- 记FreeCodeCamp中遇到的题目--js
- Spark-SQL之DataFrame操作大全
- 12. Servlet 页面点击计数器
- SIFT算法详解
- 有关Facebook Graph Api 中的一些笔记
- Unity_线渲染器和拖尾_024
- 回归分析的五个基本假设
- 详解Linux命令行下常用svn命令以及安装配置
- openCV canny边缘检测
- 写递归函数的正确思维方法
- AsyncTask框架