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>

程序利用synchronize关键字对计数函数进行了串行化(有的书中叫序列化),以确保当两个客户端同时访问网页而修改计数值时不会产生冲突;getServletContext()方法来得到application对象,因为有些Web服务器并不直接支持application对象,必须先得到其上下文;如果还是第一个访问的客户,则前面代码中得到的number会是空值,故置初始值为1,否则做增1处理;如果是一个新的会话则调用计数函数,得到计数值并将其显示。

可以发现,当刷新页面时,其数值并不会增加,只有关闭了本网站的所有窗口再重新访问时,才会增1,因为这又是一个新的会话。

时间: 2024-10-05 04:14:11

JSP简单练习-网站计数器的相关文章

一个简单的网站计数器

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

网站计数器

一个简单的网站计数器方法: ---------------------------------------------------------------- <body>   <%Integer count = (Integer)application.getAttribute("count");   if(count==null){   count=1;   }else{   count++;   }   application.setAttribute("

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

在JSP中,在"<%"和"%>"之间书写的程序代码成为java程序片. 一个JSP页面中可以有多个java程序片.要注意的是,在Java程序片中声明的变量在它们所在JSP页面的所用程序片及表达式中都有效.基于此,可以把一个较大的程序片分成几个小的程序片,还可在其中插入HTML语句,以便编写的程序代码更具有可读性. 在程序片中声明的变量只在页面有效,是局部变量,它在不同的客户访问同一个页面时,此变量是不能共享的.但如果是在"<%!"

ServletContext与网站计数器

什么是ServletContext? ServletContext是服务器的一个公用的空间,是不同的浏览器共享的一个数据. 由图可以看出ServletContext和Cookie与session之间的区别. ServletContext有哪些用处呢?1.网站计数器2.网站在线用户的显示3.简单的聊天工具总之,如果是设计到不同用户共享带护具,而中和喜爱数据量不大,同时又不希望写入数据库中,我们就可以考虑使用ServletContext来实现.注意事项:因为存在ServletContext中的数据会

ServletContext结合Servlet接口中的init()方法和destroy()方法的运用----网站计数器

我们一般知道Servlet接口中的init()方法在tomcat启动时调用,destroy()方法在tomcat关闭时调用.那么这两个方法到底在实际开发中有什么作用呢?这就是这个随笔主要讲的内容. 思路:网站计数器,如果想在服务器关闭时,保留以前的访问量,最简单的方式是把访问数据放在数据库中,但这样会增加服务器的压力.所以ServletContext结合Servlet接口中的init()方法和destroy()方法的一起使用便可以做一个网站计数器. 把数据写在一个.txt文件中,在init()方

JSP简单练习-省略显示长字符串

<%@ page contentType="text/html; charset=gb2312" %> <!-- JSP指令标签 --> <%@ page import="java.util.*" %> <!-- JSP指令标签 --> <html> <head> <title>长字符串截取示例</title> </head> <body> <

一个简单的网站访问过程

对于我们一个简单的网站访问,涉及到的技术: 1.用户访问浏览器时,浏览器会向服务器发出一个 HTTP 请求: 2.服务器接收到 HTTP 请求,Web Server 进行相应的初步处理,使用服务器脚本生成页面: 3.服务器脚本(利用Web Framework)调用本地和客户端传来的数据,生成页面: 4.Web Server 将生成的页面作为 HTTP 响应的 body,根据不同的处理结果生成 HTTP header,发回给客户端: 5.客户端(浏览器)接收到 HTTP 响应,通常第一个请求得到的

JSP简单练习-EL表达式操作JavaBean

/* * javaBean代码 */ package bean; public class Box { double length; double width; double height; public Box() { length=0; width=0; height=0; } public double getLength() { return length; } public void setLength(double length) { this.length = length; }

JSP简单练习-包装类综合应用实例

<%@ page contentType="text/html; charset=gb2312" %><!-- JSP指令标签 --> <%@ page import="java.util.*" %> <!-- JSP指令标签 --> <html> <!-- html标记符 --> <body> <% // 以下为java程序片 boolean booleanTemp=true