网站计数的实现jsp_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 网站计数的实现jsp

网站计数的实现jsp

 2015/4/14 21:28:06  melorogee  程序员俱乐部  我要评论(0)
  • 摘要:在一些博客或论坛里经常出现一些访问次数的字样,这就是通常说的网站计数器。进行网站计数器开发需要注意以下3个问题:1、网站的来访人数很多,所以必须用大整数来表示;2、每个用户在第一次访问时需要计数,重复刷新页面不应该重复计数;3、对网站访问量计数值的修改属于多线程操作,需要进行同步操作。编写的模拟网站计数器的jsp代码如下所示:<%@pagecontentType="text/html"pageEncoding="GBK"%><%@pageimport="java.io
  • 标签:实现 网站 JS
在一些博客或论坛里经常出现一些访问次数的字样,这就是通常说的网站计数器。进行网站计数器开发需要注意以下3个问题:

1、网站的来访人数很多,所以必须用大整数来表示;

2、每个用户在第一次访问时需要计数,重复刷新页面不应该重复计数;

3、对网站访问量计数值的修改属于多线程操作,需要进行同步操作。

编写的模拟网站计数器的jsp代码如下所示:

<%@ page contentType="text/html" pageEncoding="GBK"%> 

<%@ page import="java.io.*"%>      <%--由于要使用IO操作,必须导入java.io包--%> 

<%@ page import="java.util.*"%>     <%--Scanner在java.util中定义--%> 

<%@ page import="java.math.*"%>    <%--BigInteger定义在java.math中--%> 

<html> 

<head> 

    <title>网站计数器</title> 

</head> 

<body> 

<%! 

    BigInteger count = null; 

%> 

<%!//以下方法为了省事,直接在方法中处理了异常,而实际中要交给调用处处理 

    public BigInteger load(File file) {    //读取计数文件 

        BigInteger count = null;            //读取接受的数据 

        try { 

            if(file.exists()) { 

                Scanner scan = null; 

                scan = new Scanner(new FileInputStream(file));  //从文件中读取 

                if(scan.hasNext()) { 

                    count = new BigInteger(scan.next());    //将内容放到BigInteger中 

                } 

                scan.close();                   //关闭输入流 

            } else { 

                count = new BigInteger("0");            //第一次访问 

                save(file,count); 

            } 

        } catch(Exception e) { 

            e.printStackTrace(); 

        } 

        return count;                           //返回读取后的数据 

    } 

    public void save(File file,BigInteger count) { 

        try { 

            PrintStream ps = null;                  //定义输出流对象 

            ps = new PrintStream(new FileOutputStream(file));       //打印流对象 

            ps.println(count); 

            ps.close(); 

        } catch(Exception e) { 

            e.printStackTrace(); 

        } 

    }    

%> 

<% 

    String fileName = this.getServletContext().getRealPath("/") + "count.txt";   //文件路径 

    File file= new File(fileName); 

    if(session.isNew()) { 

        synchronized(this) { 

            count = load(file); 

            count = count.add(new BigInteger("1"));     //自增操作 

            save(file,count); 

        } 

    } 

%> 

<h3>你是第<%=count==null?0:count%>位访客</h3>           <%--输出内容--%> 

</body> 

</html> 
复制代码
这段代码的运行结果为:



当第一次访问这个页面显示“你是第1位访客”,刷新页面显示不变,如下图所示;






关闭浏览器用新的浏览器打开这个页面时显示“你是第2位访客”,如下图所示:





更多 java学习,java资料 http://techfoxbbs.com
发表评论
用户名: 匿名