<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="javax.servlet.*" %>
<html>
<head>
<title>站点计数器</title>
</head>
<body>
<%!
synchronized void countPeople()
{ // 串行化计数函数
ServletContext application=((HttpServlet)(this)).getServletContext();
Integer number=(Integer)application.getAttribute("Count");
if(number==null)
{ // 假设是第1个訪问本站
number=new Integer(1);
application.setAttribute("Count", number);
}
else
{
number=new Integer(number.intValue()+1);
application.setAttribute("Count",number);
}
}
%>
<%
if(session.isNew())
{ // 假设是一个新的会话
out.println("是一个新会话!");
countPeople();
}
Integer yourNumber=(Integer)application.getAttribute("Count");
out.println(yourNumber);
%>
<p>欢迎訪问本站,你是第
<%=yourNumber %>
个訪问用户。
</body>
</html>

程序利用synchronizekeyword对计数函数进行了串行化(有的书中叫序列化),以确保当两个client同一时候訪问网页而改动计数值时不会产生冲突;getServletContext()方法来得到application对象,由于有些Webserver并不直接支持application对象,必须先得到其上下文;假设还是第一个訪问的客户,则前面代码中得到的number会是空值,故置初始值为1,否则做增1处理;假设是一个新的会话则调用计数函数,得到计数值并将其显示。

能够发现,当刷新页面时,其数值并不会添加,仅仅有关闭了本站点的全部窗体再又一次訪问时,才会增1,由于这又是一个新的会话。

JSP简单练习-站点计数器的更多相关文章

  1. JSP简单练习-一个简单的计数器

    在JSP中,在"<%"和"%>"之间书写的程序代码成为java程序片. 一个JSP页面中能够有多个java程序片. 要注意的是,在Java程序片中声 ...

  2. jsp简单标签开发(一)

    孤傲苍狼 @Override22 public void doTag() throws JspException, IOException {23 //得到代表jsp标签体的JspFragment24 ...

  3. 一个简单的Verilog计数器模型

    一个简单的Verilog计数器模型 功能说明: 向上计数 向下计数 预装载值 一.代码 1.counter代码(counter.v) module counter( input clk, input ...

  4. JSP简单实现统计网页访问次数

    JSP简单实现统计网页访问次数 需求:统计网页的访问次数 核心思想:利用application对象,将访问次数的信息放入application对象中,每次访问就+1.这里利用了application对 ...

  5. JSP简单实现登录和注销

    JSP简单实现登录和注销 需求:用户登录成功后跳转到欢迎页面 用户登录失败跳转到初始的登录界面 用户点击注销,用户退出登录状态需要重新登录 登录页面的JSP代码: <%@ page langua ...

  6. 纯JSP简单登录实例

    记一下,免得以后忘记了,又要去查. 文件共有四个web.xml.login.jsp.logout.jsp.welcome.jsp四个文件 测试环境:Tomcat 6.0.x 假设项目名称是LoginS ...

  7. JSP简单介绍

    前言 知识点 1.JSP是什么   java  server   page,javaserver端页面技术.其主要作用在server端动态生成页面, 其组成java代码和html, 2.JSP的组成 ...

  8. JSP简单记录

    JSP,全称是Java Server Page,是运行在服务器端的页面,是建立在Servlet规范的动态网页技术,JSP文件在第一次请求时,会被编译成Servlet,所以JSP也可以看成是运行中的Se ...

  9. JSP简单标签带属性开发

    1.开发带属性的标签,标签处理器类中属性要有相应setter方法,符合javaBean规范 2.tld文件中进行相应属性标签配置 属性配置相关说明如下图 3.简单标签带属性的例子 1).通过设置标签属 ...

随机推荐

  1. surfaceflinger中各个layer的排序

    surfaceflinger的主要工作就是负责把上层传递下来的各个不同的layer进行composition. 这里,我们来讨论一下各个layer在surfaceflinger中的上下排序关系和相关的 ...

  2. error U1087: cannot have : and :: dependents for same target

    windows驱动开发遇到错误: 1>e:\winddk\7600\bin\makefile.new(7117) : error U1087: cannot have : and :: depe ...

  3. NPOI 创建Excel,数据读取与写入

    <1> using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...

  4. 循环多少次? 【杭电--HDOJ-1799】 附题+具体解释

    循环多少次? Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  5. Shell split character line by line

    while read line      do            account=`echo "$line"| cut -c1-9`'|'            account ...

  6. MySQL 改动用户password及重置rootpassword

    为数据库用户改动password是DBA比較常见的工作之中的一个.对于MySQL用户账户的password改动,有几种不同的方式.推荐的方式使用加密函数来改动password. 本文主要描写叙述了通过 ...

  7. python学习笔记之十:文件和素材

    这里将介绍函数和对象--文件和流,让你在程序调用期间存储数据,并且可以处理来自其他程序的数据. 一. 打开文件 1.1 open函数 open函数用来打开文件,语法如下:open(name,[.mod ...

  8. UDE-00008 ORA-31626 ORA-06512 ORA-25254

    今天在导出一个模式的时候,约140GB,出现例如以下错误: UDE-00008: operation generated ORACLE error 31626 ORA-31626: job does ...

  9. hdu1664 Different Digits

    求出n的倍数m,要求m使用的不同数字最少,且最小. 一开始不知道怎么搜,因为不知道m由多少个不同的数字组成. 然后百度了一下,看到和数论有关. m可能使用的数字的个数可能为一个或者两个 a,aa,aa ...

  10. oracle迁移mysql数据库注意(转)

    oracle转mysql修改: 1. substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_c ...