有关JSP计数器的简单问题

mendynew 2004-10-11 09:55:19
这是大多数网站上关于JSP计数器制作的文章:

计数器是一般网站必备的东东,别小看它了,每当站长看着小小计数器上的数字飞速增长的时候,感觉实在是好极了。以前我们用cgi、asp来写计数器,这方面的文章很多了,在这里,我们将会采用目前比较流行的jsp技术演示如何做一个计数器。

  其中我们用到了两个文件,test.jsp文件用于在浏览器中运行,counter.java是后台的一个小java bean程序,用来读计数器的值和写入计数器的值。而对于计数器的保存,我们采用了一个文本文件lyfcount.txt。

下面是详细的程序代码(test.jsp放到web目录下,counter.java放到class目录):
//test.jsp文件
<%@ page contentType="text/html;charset=gb2312"%>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META NAME="GENERATOR" CONTENT="Oracle JDeveloper">
<TITLE>
计数器演示程序
</TITLE>
</HEAD>
<BODY>
<!--创建并调用bean(counter)-->
<jsp:useBean id="counter" class="counter" scope="request">
</jsp:useBean>
<%
//调用counter对象的ReadFile方法来读取文件lyfcount.txt中的计数
String cont=counter.ReadFile("/lyfcount.txt");
//调用counter对象的ReadFile方法来将计数器加一后写入到文件lyfcount.txt中
counter.WriteFile("/lyfcount.txt",cont);%>
您是第<font color="red"><%=cont%></font>位访问者
</BODY>
</HTML>

//counter.java 读写文件的一个bean
import java.io.*;

public class counter extends Object {
private String currentRecord = null;//保存文本的变量
private BufferedReader file; //BufferedReader对象,用于读取文件数据
private String path;//文件完整路径名
public counter() {
}
//ReadFile方法用来读取文件filePath中的数据,并返回这个数据
public String ReadFile(String filePath) throws FileNotFoundException
{
path = filePath;
//创建新的BufferedReader对象
file = new BufferedReader(new FileReader(path));
String returnStr =null;
try
{
//读取一行数据并保存到currentRecord变量中
currentRecord = file.readLine();
}
catch (IOException e)
{//错误处理
System.out.println("读取数据错误.");
}
if (currentRecord == null)
//如果文件为空
returnStr = "没有任何记录";
else
{//文件不为空
returnStr =currentRecord;
}
//返回读取文件的数据
return returnStr;
}
//ReadFile方法用来将数据counter+1后写入到文本文件filePath中
//以实现计数增长的功能
public void WriteFile(String filePath,String counter) throws FileNotFoundException
{
path = filePath;
//将counter转换为int类型并加一
int Writestr = Integer.parseInt(counter)+1;
try {
//创建PrintWriter对象,用于写入数据到文件中
PrintWriter pw = new PrintWriter(new FileOutputStream(filePath));
//用文本格式打印整数Writestr
pw.println(Writestr);
//清除PrintWriter对象
pw.close();
} catch(IOException e) {
//错误处理
System.out.println("写入文件错误"+e.getMessage());
}
}

}

  到这里,程序写完了,将counter.java编译为counter.class,同样放在对应的class目录下,在根目录下建立一个lyfcount.txt文件,文件内容就一个数字0,直接在浏览器中敲入地址就可以看到计数器了,刷新浏览器会看到不断变幻的数字。

  (如果运行时候提示找不到文件,请将上面test.jsp中的readfile那一句注释后运行一次则lyfcount.txt文件自动建立,然后就可以正常运行。)



我按照上面的步骤做好之后,test.jsp总是打不开,说是counter类文件的问题,如下:
exception

org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 8 in the jsp file: /test.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\test_jsp.java:50: cannot resolve symbol
symbol : class counter
location: class org.apache.jsp.test_jsp
counter counter = null;
^


An error occurred at line: 8 in the jsp file: /test.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\test_jsp.java:52: cannot resolve symbol
symbol : class counter
location: class org.apache.jsp.test_jsp
counter = (Counter) _jspx_page_context.getAttribute("counter", PageContext.REQUEST_SCOPE);
^


An error occurred at line: 8 in the jsp file: /test.jsp
Generated servlet error:
C:\Tomcat 5.0\work\Catalina\localhost\_\org\apache\jsp\test_jsp.java:54: cannot resolve symbol
symbol : class counter
location: class org.apache.jsp.test_jsp
counter = new counter();
^
3 errors



不知道是什么原因,恳请各位指点啊
万分感谢!!!


...全文
143 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldl999 2004-10-12
  • 打赏
  • 举报
回复
也给我一份吧 ,我地址是ldonglin@hotmail.com
herman~~ 2004-10-12
  • 打赏
  • 举报
回复
我的邮箱是cheny@gzsts.com
herman~~ 2004-10-12
  • 打赏
  • 举报
回复
yujiabian(流氓兔子雨)

能发一份给我吗??我也刚接触jsp,帮一下忙吧??
皮鲁 2004-10-12
  • 打赏
  • 举报
回复
把counter.class文件放到 web-inf/classes下就可以了吗?
不行就把它放到一个package里,
在你的counter.java顶上,加入 package count; 编译好后把 count/counter.class放到classes里,然后useBean的时候,. class="count.counter" scope="request"
micker 2004-10-12
  • 打赏
  • 举报
回复
yujiabian(流氓兔子雨) :能发一份给我吗?
shenyingfan@msn.com
yujiabian 2004-10-12
  • 打赏
  • 举报
回复
你有信箱吗?我把我手里面的程序打包给你
我的信箱:yujiabian_hginfo@163.com
mendynew 2004-10-12
  • 打赏
  • 举报
回复
counter.class是已经放到文件放到 web-inf/classes文件夹下的啊
mendynew 2004-10-11
  • 打赏
  • 举报
回复
在线等待啊

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧