Servlet 页面点击计数器
实现Servlet上某个页面的总点击量,使用 Servlet 来计算这些点击量是非常简单的,因为一个 Servlet 的生命周期是由它运行所在的容器控制的。
以下是实现一个简单的基于 Servlet 生命周期的网页点击计数器需要采取的步骤:
  • 在 init() 方法中初始化一个全局变量;
  • 每次调用 doGet() 或 doPost() 方法时,都增加全局变量;
  • 如果需要,可以在destroy() 中可以使用一个数据库表来存储全局变量的值。在下次初始化 Servlet 时,该值可在 init() 方法内被读取,这样处理可以实现该数据的持久化;
  • 如果只想对一个 session 会话计数一次页面点击,那么请使用 isNew() 方法来检查该 session 会话是否已点击过相同页面;
在这里,假设 Web 容器将无法重新启动。如果是重新启动或 Servlet 被销毁,计数器将被重置。
public class PageHitCounter extends HttpServlet {

    private int hitCount; 

    public void init(){

        hitCount = 0; // 重置点击计数器,如果要实现hitCount的持久化,可以在这里从数据库中读取该数据

    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

        // 增加 hitCount 

        hitCount++; 

        

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        String docType = "<!DOCTYPE html> \n";

        out.println(docType +

            "<html>\n" +

            "<head><title>Hit Count</title></head>\n" +

            "<body">\n" +

            "<h1 align=\"center\">Hit Count</h1>\n" +

            "<h2 align=\"center\">" + hitCount + "</h2>\n" +

            "</body></html>");

    }

    

    public void destroy() { 

        // 但是如果需要实现hitCount的持久化,可以把 hitCount 的值写入到数据库

    } 

}


以下是实现一些页面计数器的思路;

网站所有页面的总访问量
使用 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添加,删除相应属性 );
//应该实现 count 数据的同步性,这里略过

public class OnlineCount{

    private static int count = 0;

    public static void add(){

        count ++;

    }

    public static void reduce(){

        count --;

    }

    public static int value(){

        return count;

    }

}

OnlineListener.java : HttpSessionListener 监听器类

public class OnlineListener implements HttpSessionListener{  

    //根据session的建立和销毁进行计数

    public void sessionCreated(HttpSessionEvent se) {  

        OnlineCount.add();

    }  

    public void sessionDestroyed(HttpSessionEvent se) {  

        onlineCount.reduce();

    } 

}  

web.xml 中添加 listener的配置
<listener>  

    <listener-class>listener.OnlineListener</listener-class>  

</listener>   

在 Servlet 或 JSP 中要获取在线总人数 直接调用 OnlineCount.value();

12. Servlet 页面点击计数器相关推荐

  1. html点击计数器的实现,点击计数器_Servlet 教程_w3cschool

    点击计数器 Web 页面的点击计数器 很多时候,你可能有兴趣知道你网站的某个特定页面上的总点击量.使用 servlet 来计算这些点击量是非常简单的,因为一个 servlet 的生命周期是由它运行的容 ...

  2. 在jsp页面中点击编辑按钮,显示input边框,可编辑,点击保存按钮,输入框消失,不可编辑,并将文本框中的内容保存到数据库中

    寻找的资料 一. 默认readonly不允许编辑.点击编辑的时候加上边框样式,去掉readonly属性 <style>.readonly input{border:none}</st ...

  3. web课程设计网页规划与设计:文化网站设计——中国水墨风书画艺术网站(12个页面)...

    web课程设计网页规划与设计:文化网站设计--中国水墨风书画艺术网站(12个页面) 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多 ...

  4. web课程设计网页规划与设计:文化网站设计——中国水墨风书画艺术网站(12个页面)

    web课程设计网页规划与设计:文化网站设计--中国水墨风书画艺术网站(12个页面) 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手?网页要求的总数量太多 ...

  5. web课程设计网页规划与设计 :网页设计——在线书店(12个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业...

    web课程设计网页规划与设计 :网页设计--在线书店(12个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头 ...

  6. 页面点击出现小心心。

    // 页面点击出现小心心 !function(){// 创建一个style标签添加到head下面,并写好样式let windowHeartStyle = document.createElement( ...

  7. HTML页面点击按钮关闭页面的方式

    这篇文章给大家分享HTML页面点击按钮关闭页面的几种方式,实现思路非常简单,有不带任何方式的关闭窗口,提示之后关闭页面,点击关闭本页面并跳转到其他页面等等,每种方式结合实例代码给大家介绍的非常详细,需 ...

  8. web课程设计网页规划与设计 :网页设计——在线书店(12个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业

    web课程设计网页规划与设计 :网页设计--在线书店(12个页面) HTML+CSS+JavaScript 学生网页课程设计期末作业 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头 ...

  9. 页面点击率统计java_JSP点击量(访问量)统计实例

    在本章中,我们将在JSP中讨论如何实现点击量统计. 点击计数器用于统计有关网站的特定页面上的访问次数.假设人们首先登陆网站主页,通常是index.jsp页面中有点击计数器. 要实现一个点击计数器,可使 ...

最新文章

  1. shell的各种运行模式?
  2. [PHP]用PHPUnit进行行为驱动开发(Behaviour-Driven Development)
  3. 为什么会有这么多python?其实python并不是编程语言!
  4. Windows Embedded Compact 7开发环境的搭建
  5. 基于三维点云场景的语义及实例分割:RandLA-Net和3D-BoNet
  6. 【Linux】部署cobbler
  7. 1. 变量和基本类型
  8. Latex 合并pdf文档
  9. Q112:用Xcode调试程序(以PBRT-V3中的pbrt为例)
  10. 解决!Gallery中嵌套ListView,Gallery不能滑动的问题
  11. laravel 微信支付easywechat
  12. vue2+element ui 导入和导出后端传过来的文件
  13. 腾讯区块链的三年与它的打法
  14. 系统自带测试软件,Windows7自带软件测试RAID系统
  15. ws2812驱动总结(包括对时序的详细分析,代码基于STC15系列单片机)
  16. Linux-DRBD
  17. c语言判断一个数是否为偶数源代码,c语言判断一个数是否为偶数
  18. 为什么湾区程序员买不起房?
  19. 微软拼音输入法 linux,微软称Linux将会消失 后者回应将反击
  20. 深度学习平台使用文档

热门文章

  1. 高考水平科测试软件,免费 高中选课选科综合测评 - 在线工具网 - 工作生活好帮手...
  2. 一根网线同时搭载电信itv及网络 解决方案
  3. JVM原理优化及GC
  4. ubuntu下安装epsxe简单说明
  5. 关于各种运输层的可靠传输协议
  6. Oracle中国西安,西安甲骨
  7. 每日区块链:智能合约是否是区块链的最佳创新?
  8. BlueJ的简单使用
  9. 机会网络仿真模拟软件ONE:配置文件settings的解读
  10. 《微信公众平台与小程序开发——从零搭建整套系统》欢迎来到异步社区!