<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page contentType="text/html; charset=GBK" %>
<%@page import="java.math.BigInteger"%>
<%@page import="java.io.File"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.PrintStream"%>
<%@page import="java.io.FileOutputStream"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>网站计数器</title>
  </head>
  
  <body>
  <%!
      BigInteger count = null;
  %>
  <%!
      public BigInteger load(File file){
          BigInteger count = null;
          try{
              if(file.exists()){
                  Scanner scan = new Scanner(new FileInputStream(file));
                  if(scan.hasNext()){
                      count = new BigInteger(scan.next());
                  }
                  scan.close();
              }else{
                  count = new BigInteger("0");
                  save(file, count);
              }
          }catch (Exception e){
              System.out.println(e);
          }
          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){
              System.out.println(e);
          }
      }
  %>
  <%
      System.out.println("count=========" + count);
      String fileName = this.getServletContext().getRealPath("/") + "count.txt";
      File file = new File(fileName);
      if(session.isNew()){
          synchronized(this){
              count = load(file);
              System.out.println("count=========" + count);
              count = count.add(new BigInteger("1"));
              save(file, count);
              System.out.println("count=========" + count);
          }
      }
  %>
  <h2>您是第<%=count == null ? 0 : count %>位访客</h2>
  </body>
</html>为什么红色字体处显示有错误呢??

解决方案 »

  1.   

    老大,你这初始化的时候是空的吧?BigInteger count = null;
    -->count = count.add(new BigInteger("1"));
      

  2.   

    BigInteger count = null;
    你在这儿设置为空值,后面也要给赋值的。不然怎么实现计数的操作呢。 如何修改?敬请期待高人~~~
      

  3.   


    正常操作,第一次创建文件,而后进入exists 里面,里面已经写入值,不会造成问题吧,除非文件创建后,里面为空。[1,检查部署文件里面是否存在一个空的count.txt 2,代码完善判断条件]