JSP简单练习-站点计数器
<%@ 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简单练习-站点计数器的更多相关文章
- JSP简单练习-一个简单的计数器
在JSP中,在"<%"和"%>"之间书写的程序代码成为java程序片. 一个JSP页面中能够有多个java程序片. 要注意的是,在Java程序片中声 ...
- jsp简单标签开发(一)
孤傲苍狼 @Override22 public void doTag() throws JspException, IOException {23 //得到代表jsp标签体的JspFragment24 ...
- 一个简单的Verilog计数器模型
一个简单的Verilog计数器模型 功能说明: 向上计数 向下计数 预装载值 一.代码 1.counter代码(counter.v) module counter( input clk, input ...
- JSP简单实现统计网页访问次数
JSP简单实现统计网页访问次数 需求:统计网页的访问次数 核心思想:利用application对象,将访问次数的信息放入application对象中,每次访问就+1.这里利用了application对 ...
- JSP简单实现登录和注销
JSP简单实现登录和注销 需求:用户登录成功后跳转到欢迎页面 用户登录失败跳转到初始的登录界面 用户点击注销,用户退出登录状态需要重新登录 登录页面的JSP代码: <%@ page langua ...
- 纯JSP简单登录实例
记一下,免得以后忘记了,又要去查. 文件共有四个web.xml.login.jsp.logout.jsp.welcome.jsp四个文件 测试环境:Tomcat 6.0.x 假设项目名称是LoginS ...
- JSP简单介绍
前言 知识点 1.JSP是什么 java server page,javaserver端页面技术.其主要作用在server端动态生成页面, 其组成java代码和html, 2.JSP的组成 ...
- JSP简单记录
JSP,全称是Java Server Page,是运行在服务器端的页面,是建立在Servlet规范的动态网页技术,JSP文件在第一次请求时,会被编译成Servlet,所以JSP也可以看成是运行中的Se ...
- JSP简单标签带属性开发
1.开发带属性的标签,标签处理器类中属性要有相应setter方法,符合javaBean规范 2.tld文件中进行相应属性标签配置 属性配置相关说明如下图 3.简单标签带属性的例子 1).通过设置标签属 ...
随机推荐
- Android error:No CPU/ABI system image available for this target
原文:Android error:No CPU/ABI system image available for this target No CPU/ABI system image available ...
- HibernateReview Day2–Hibernate体系结构
本文摘自 李刚 著 <Java EE企业应用实战> 现在我们知道了一个概念Hibernate Session,只有处于Session管理下的POJO才具有持久化操作能力.当应用程序对于处于 ...
- CheckBoxList的操作查询是否被选中设置或者得到
在项目中我们可能会经常遇到一收集多选信息的情况,比如做注册的时候要收集个人爱好,那时候大家第一个想到的肯定是CheckBoxList.那我们怎么来获取到CheckBoxList的值并且存入数据库呢?? ...
- ZOJ 2110 Tempter of the Bone(条件迷宫DFS,HDU1010)
题意 一仅仅狗要逃离迷宫 能够往上下左右4个方向走 每走一步耗时1s 每一个格子仅仅能走一次且迷宫的门仅仅在t时刻打开一次 问狗是否有可能逃离这个迷宫 直接DFS 直道找到满足条件的路径 ...
- boost事件处理
尽管这个库的名字乍一看好象有点误导,但实际上并不是如此. Boost.Signals 所实现的模式被命名为 '信号至插槽' (signal to slot).它基于下面概念:当相应的信号被发出时.相关 ...
- Codeforces Round #248 (Div. 1)——Nanami's Digital Board
题目连接 题意: 给n*m的0/1矩阵,q次操作,每次有两种:1)将x,y位置值翻转 2)计算以(x,y)为边界的矩形的面积最大值 (1 ≤ n, m, q ≤ 1000) 分析: 考虑以(x,y)为 ...
- c++堆栈实现
A Stack is a data-structure that You can only add an element to the top of the Stack, andYou can onl ...
- 自己定义actionbar
android中的actionbar可提供自己定义view.详细是先写好自己定义view的布局,然后在代码中获取Actionbar对象.调用 setCustomView方法. 可是这样,它还是会显示前 ...
- CSAPP 六个重要的实验 lab5
CSAPP && lab5 实验指导书: http://download.csdn.net/detail/u011368821/7951657 实验材料: http://downlo ...
- sql分隔字符串数组
declare @relation_code nvarchar(1024) set @relation_code = '#10000#10002' set @relation_code=substri ...