在jsp页面中实现网站计数器的方法有很多,其中比较普遍的做法是利用application 和session对象。application对象可被所有用户共享;session是单用户共享,用户从访问系统开始到退出系统,都可以使用session。网站计数器的实现思路是:当系统创建一个session对象时,将application中保存的计数变量加1

count.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
  <head>
  </head>

  <body>
    <%!
        synchronized void countPeople(){
            ServletContext application = this.getServletContext();
            Integer number = (Integer) application.getAttribute("count");
            if(number == null){
                number = new Integer(1);
                application.setAttribute("count", number);
            }
            else{
                number = new Integer(number.intValue() + 1);
                application.setAttribute("count",number);
            }
        }
     %>

     <%
         if(session.isNew()){
             countPeople();
         }
         Integer yourNumber = (Integer) application.getAttribute("count");
     %>
     <p></p>
     欢迎访问本网站,您是第<%= yourNumber %>个访问用户。
  </body>
</html>

在上述代码中,为了避免使用application 对象出现并发问题,因此使用了synchronized 关键字。为了避免页面刷新问题,添加了session.isNew()判断,如果session对象是新建的,表明用户开始访问系统,将计数器加1;当用户刷新当前页面时,由于session对象不是新建的,因此避免了重复加1的问题

实际上,在实现计数器功能是,需要注意一些细节问题,例如频繁刷新和并发访问等。由于application对象的生命周期与服务器启动和停止相关,因此如果服务器由于出现问题重启,application保存的计数器将清空。要解决该问题可以将计数器的值保存在文件中,利用读写文件的功能再对计数器加1.

【jsp网站计数功能】 application session的更多相关文章

  1. JSP内置对象--application对象(getRealPath(),getAttributeNames(),getContextPath())

    application对象是javax.servlet.ServletContext接口的实例化对象.是整个servlet的上下文,代表了整个web容器的操作. 常用方法: 1.java.lang.S ...

  2. Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别

    2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...

  3. Application,Session,Cookie,ViewState和Cache区别

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  4. 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法

    转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...

  5. ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)

    在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...

  6. 监听器应用【统计网站人数、自定义session扫描器、踢人小案例】

    从第一篇已经讲解过了监听器的基本概念,以及Servlet各种的监听器.这篇博文主要讲解的是监听器的应用. 统计网站在线人数 分析 我们在网站中一般使用Session来标识某用户是否登陆了,如果登陆了, ...

  7. jsp网站与discuz论坛用户同步

    需求分析: 要想实现A(jsp网站)和B(discuz论坛)的同步,这里说的同步指的是 在AB网站任意一方注册之后在另一方都可以直接登录 AB两网站之间的用户登陆状态是同步的,在任意一方登录后,另一方 ...

  8. TF:Tensorflow定义变量+常量,实现输出计数功能—Jason niu

    #TF:Tensorflow定义变量+常量,实现输出计数功能 import tensorflow as tf state = tf.Variable(0, name='Parameter_name_c ...

  9. 第十三章 Odoo 12开发之创建网站前端功能

    Odoo 起初是一个后台系统,但很快就有了前端界面的需求.早期基于后台界面的门户界面不够灵活并且对移动端不友好.为解决这一问题,Odoo 引入了新的网站功能,为系统添加了 CMS(Content Ma ...

随机推荐

  1. 2016年团体程序设计天梯赛-决赛 L1-6. 一帮一(15)

    “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组.本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中, ...

  2. Jquery获得 selection的text 和 option值

    Jquery获得 selection的text 和 option值 <select id="accountStatus" editable="false" ...

  3. hdu_5324_Boring Class(cdq分治+树状数组)

    题目链接:hdu_5324_Boring Class 题意: 给出n个二维点对,求LIS长度和编号字典序最小的LIS(x非增,y非减) 题解: dp[i]=max(dp[j]) (i>j,l[i ...

  4. 浙大 pat 1047题解

    1047. Student List for Course (25) 时间限制 400 ms 内存限制 64000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  5. uhttpd配置文件分析

    文件位于 /etc/config/uhttpd. root@hbg:/etc/config# cat uhttpd config uhttpd 'main'        list listen_ht ...

  6. debian服务器上不了网,缺少默认网关

    debian服务器上不了网,缺少默认网关 root@hbg:/# route -nKernel IP routing tableDestination     Gateway         Genm ...

  7. MySQL(3)-索引

    一.索引类型 在MySQL中,存储引擎使用索引,首先在索引中找到对应值,然后根据匹配的索引记录中找到对应的行. 无论是多么复杂的ORM工具,在精妙和复杂的索引面前都是"浮云".这里 ...

  8. js广告图片轮播

    <div class="box"> <div class="box1"></div> <div class=" ...

  9. Arch安装详解

    选择安装方式 CD/USB Arch启动盘安装 使用Arch启动盘比较简单方便,没有额外设置,直接阅读下一步. USB flash installation media 启动盘制作: USB flas ...

  10. Openjudge-计算概论(A)-整数的个数

    描述: 给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数.写程序计算给定的k个正整数中,1,5和10出现的次数.输入输入有两行:第一行包含一个正整数k,第二行包 ...