学Java-计数器-修正版

请直接看代码,解释都在里面了

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!// 一个同步用的锁
 private static final Object lock = new Object();%>
Hello Word!
<%
 Integer count = 0;
 // 此处是否有同步问题呢?
 // 比如2个用户同时拿到了当前的计数器,
 // 访问次数加1
 // 当更新时是否会丢失访问次数呢?
 //
 // 会的,你可以在count=的代码后面增加如下的语句模拟一下就知道了
 // 所以此处同样要同步
 // 那我们自己定义一个同步锁吧,取名叫lock,放在了JSP的静态代码段里,
 synchronized (lock) {

  // 我们使用application 记录页面访问的计数器
  // 先从里面拿到数据
  // 注意这里一定要是使用Integer,而不是int
  // 因为如果第一次访问,则会返回null,再从Integer转化为int时会出现nullPointerException
  //
  count = (Integer) application.getAttribute("INDEX_COUNTER");

  //
  // 让线程等待10秒,这是你可以开2个浏览器,分别刷新,
  // 最后的计数器是只增加1的,而不是我们预期的2
  // Thread.sleep(10000);

  // 如果是第一次访问,则进行初始化
  if (count == null) {
   // 这里使用了JDK5.0以后支持的自动box方式
   count = 0;

   // 保存到application里面
   application.setAttribute("INDEX_COUNTER", count);
  }
  count++;
  // 保存到application里面
  application.setAttribute("INDEX_COUNTER", count);
 }
%>

当前一共访问次数为:<%=count%>

</body>
</html>

时间: 2024-11-05 14:55:56

学Java-计数器-修正版的相关文章

《selenium2 Java 自动化测试实战(修正版)》 更新2015.12.5

java 版来了!! 本文档在<selenium2 Python 自动化测试实战>的基础上,将代码与实例替换为java ,当然,部分章节有变更.这主要更语言本身的特点有关.集合和java下两大主流单元测试框架Junit4 和 TestNG.如何通过sikuli帮助我们识别和定位元素. 自从出了Python 版的Selenium自动化测试以来,一直有同学不断询问有没有Java版的. 其实,关于Selenium的讲解,Java版的资料是最多的.目前市面的Selenium书,大多例子也是用的Java

该学Java或.NET?

自从.NET问世以来,程序员都很关心的一个问题是「该学Java或.NET」.我也在挣扎,该「该继续Java的研究,或者该开始准备培养.NET的知识」. 当然,最好是能两者兼顾,但是每个人的时间都很有限,想要兼顾两者,其实不太容易.投入在.NET的时间越多,所能花费在Java的时间自然就少了,反之亦然.在信息爆炸的时代,重要的不是信息的取得,而是信息的抉择.信息太多,时间太少,如果不能慎选适合的技术,只会平白浪费许多时间,斫丧自己的竞争力. 由于我喜新厌旧的个性使然,过去这两年半,我着实花了不少时

作为一名MM,我深深得赶脚学java好费力。求方法

问题描述 从上月开始学的,每天都有无数的问题,理不清.之后又出现其他的问题.好费力,大家都是怎么学起来的啊? 解决方案 解决方案二:问题越多学起来才越有动力不是吗?问题少了说明你到了瓶颈阶段了解决方案三:基础阶段反复看,反复学习,多敲代码,多多思考.刚开始学,要理解的东西太多了,前面没理解好,往后看,回头发现前面理解的又有问题,又要回头看.基础阶段看慢一点,多敲敲代码,先跟着书本敲,后面合上书本敲,然后带着自己的问题敲.多理解吧.解决方案四:我媳妇学的是JAVA,之前也天天说难学.现在已经学得很

求救-新学期学java,求开发工具

问题描述 新学期学java,求开发工具 请问谁有java的开发工具 eclipse啊?帮忙发给我一下吧!!!在网上找不到,请大神帮帮忙, 解决方案 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr 解决方案二: 直接百度eclipse,进官网按照提示就能下载了 解决方案三: http://www.eclipse.org/downloads/直接去官网下 解决方案四: 就是上面那个官网,选择

新手学JAVA(三)----StringBuilder类

   上一篇文章新手学JAVA(二)----String类与StringBuffer类的区别中了解到,String的值是不可变的,这就导致 每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变 类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象.       StringBuffer类和StringBuilder类功能基本相似.算是两个双胞胎.   下面主要说两点   第一点  线程安全   Str

正在学java 后台传到前台的中文为??? 这是个什么鬼 在线等

问题描述 正在学java 后台传到前台的中文为??? 这是个什么鬼 在线等 后台代码如下: public String paging(){ HttpServletRequest req=ServletActionContext.getRequest(); HttpServletResponse resp=ServletActionContext.getResponse(); int pageIndex=Integer.parseInt(req.getParameter("pageIndex&qu

从零开始学 Java (一) Hello World 左光 2005.4

从零开始学 Java  (一) Hello World     左光 2005.4 从昨天开始学习 Java,把自己在学习中遇到的一些问题和体会发出来,供大家借鉴. 要想编写一个 Java 版的 Hello World  程序并运行需要完成下面两步: 1.下载并安装JDK5.0 或者 JDK1.4.2 .不要对版本号产生什么疑问,据我的理解,JDK5.0 也就是JDK1.5 ,是 JDK1.4.2 的重要升级,里面加了许多新的语言特性,为什么叫 5.0 而不叫1.5 ,我想可能是出于商业上的考虑

跪求大神解答-新手学java有几个不懂得问题求各位大神解答

问题描述 新手学java有几个不懂得问题求各位大神解答 封装有什么意义.为什么要用prative封装呢.直接public不行吗?都说为了安全难道用一个方法setter getter 改变数据这样就安全么?.直接public 多方便.求大神举个例子说明. 第二个问题static:证明此方法是由类名称调用的这句话怎么理解. 第三个问题static有什么作用,我就知道他在类里最先执行然后可以不实力化调用,然后有什么用这有点蒙. 第四个问题我理解的映射就是一项与另一项的关系.他也可以用属性表示.但是之所

我想去学java,北京java培训机构那家好点呀?

问题描述 我现在大学毕业了,想去学java,但是又不知道去那学习,我想找一个学习时间短点了.

java小数转换-刚学java的新手遇到的问题

问题描述 刚学java的新手遇到的问题 题目是这样的,编一程序,将摄氏度换为华氏度.公式为:f=c*9/5+32.其中f为华氏度,c为摄氏度. 以下是我的代码 import java.util.*; public class Main{ public static void main (String[] args){ Scanner in1 = new Scanner(System.in); int c =in1.nextInt(); double f = c*9/5+32; System.ou