<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.io.*"%>
<%!
int temp=0;//问1:为什么temp不能直接定义在load方法的try{}里?如果定义在里面就会出现temp cannot be resolved int load(File f){//取得count.txt中的访问量
try{
temp=new Integer(new BufferedReader(new InputStreamReader(new FileInputStream(f))).readLine());
}catch(Exception e){e.getMessage();}
return temp;
}
public synchronized void save(int c,File f){//向count.txt中保存访问量
try{
int tem=++c;
session.setAttribute("count",new Integer(tem));//问2:session为何无法被解析?
PrintStream ps=new PrintStream(new FileOutputStream(f));
ps.println(c);
ps.close();
}catch(Exception e){ e.getMessage();}
}
%>
<%
String fileName=getServletContext().getRealPath("/")+"application"+File.separator+"count.txt";
File f=new File(fileName);
int count=load(f);
if(session.isNew())
save(count,f);//如果是一个新的会话,计数器加1
%><h1>你是第<%=session.getAttribute("count")%>个访问本站的人!</h1>望大虾能为我的这个toy程序指点迷津,谢谢

解决方案 »

  1.   

    1st temp 定义在try{}里的话,其作用域只在try的{}块里,所以外头会说temp未定义2nd 你确信这行执行到了么: session.setAttribute("count",new Integer(tem));//问2:session为何无法被解析?
      

  2.   

    session.setAttribute("count",new Integer(tem));有没有执行到我不清楚,执行到和解析到对session的使用有什么影响吗?
      

  3.   

    我修改了下程序,成功了,但上面的那个问题还是不知道怎么回事,希望有人能说的详细些,谢谢
    修改后如下:<%@ page contentType="text/html;charset=gbk"%>
    <%@ page import="java.io.*"%>
    <%!
    int tem=0;//增设了一个全局变量
    int load(File f){
    int temp=0;
    try{
    temp=new Integer(new BufferedReader(new InputStreamReader(new FileInputStream(f))).readLine());
    }catch(Exception e){e.getMessage();}
    return temp;
    }
    public synchronized void save(int c,File f){
    try{
    tem=++c;
    PrintStream ps=new PrintStream(new FileOutputStream(f));
    ps.println(c);
    ps.close();
    }catch(Exception e){ e.getMessage();}
    }
    %>
    <%
    String fileName=getServletContext().getRealPath("/")+"application"+File.separator+"count.txt";
    File f=new File(fileName);
    int count=load(f);
    if(session.isNew()){
    save(count,f);
    session.setAttribute("counter",tem);//session重定位于此
    }
    %><h1>你是第<%=session.getAttribute("counter")%>个访问本站的人!</h1>其实不用session直接输出tem好像也可以,但是在代码修改后,页面重刷新tem会重初始化为0,而session已old所以我选择将访问量记录到了session的属性中。
      

  4.   

     session楼主还应该在理解的深一点