主题:我以为很容易的JavaBean为什么连测试都不成功?求救!!
冰点零点
[专家分:0] 发布于 2005-08-23 17:00:00
我是新手!!一般的jsp文件已经能够测试了!但是要调用JavaBean的时候却测试不成功!测试这东西是不是还要设置什么东西呢?在这里我想得到高手们指出任何有可能发生错误的地方!以给我解决问题,给我找到学习jsp的信心!
我测试的步骤如下:
1.我要测试的lwb.jsp文件在...\Tomcat 4.1\webapps\ROOT目录下。
2.我要调用的nowtime.class文件在...\Tomcat 4.1\webapps\ROOT\WEB-INF\classes\date目录下。
3.我启动Tomcat 4.1在IE地址栏中输入http://localhost:8080/lwb.jsp来测试。
4.我的jsp文件内容如下:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page import="date.nowtime"%>
<jsp:useBean id="nowtime" class="date.nowtime" scope="page" />
<jsp:setProperty name="nowtime" property="*"/>
<html>
<head>
</head>
<body>
<%
out.print(Nowtime.getDate());
%>
</body>
</html>
5.我的JavaBean原文件内容如下:
package date;
import java.util.*;
public class nowtime{
private String str="现在的时间是:";
public String getDate(){
return str+(new java.util.Date()).toLocaleString();
}
}
6.测试出来的错误报告大概如下:
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: /lwb.jsp(2,4) Invalid directive
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:94)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:428)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:126)
......
回复列表 (共10个回复)
沙发
jinlonggao [专家分:17130] 发布于 2005-08-22 11:33:00
你lwd.jsp 的第二句错误:
<%@ import="date.nowtime"%>
应改为:
<%@ page import="date.nowtime"%>
此外,既然没有参数输入,也就没必要如下语句:
<jsp:setProperty name="nowtime" property="*"/>
板凳
冰点零点 [专家分:0] 发布于 2005-08-22 14:26:00
我看了别人的帖子
输出部分是这样写的:
......
<%
out.print("<h1>javabean</h1><br>");
String date=nowtime.getDate();
%>
<%=date%>
那用out.print(Nowtime.getDate());不能直接输出吗?为什么?
3 楼
hlnccc [专家分:250] 发布于 2005-08-23 09:27:00
out.print(Nowtime.getDate());
在语法正确的前提下是没有问题的,主要是Nowtime.getDate(),Nowtime是什么?在哪定义了?类名么?如果是类名,getDate()就要是静态方法,
你程序中的<jsp:setProperty name="nowtime" property="*"/>是多余的,可能你还不知道这句是做什么用的
4 楼
冰点零点 [专家分:0] 发布于 2005-08-23 18:02:00
是的 我真的不知道!或许我看的书太少了!!我现在对javabean越来越不懂了!!
hlnccc假如用out.print(Nowtime.getDate());输出 那我到底应该怎么写呢?
5 楼
冰点零点 [专家分:0] 发布于 2005-08-23 18:16:00
我这里还有另外的一个例子!!是从光盘上弄来的!!代码应该不错!!但是我还是运行不了啊!!怎么办啊?
我运行这个例子的步骤如下:
1.我要测试的05_01.jsp文件在...\Tomcat 4.1\webapps\ROOT\Code\05目录下。
2.我要调用的nowtime.class文件在...\Tomcat 4.1\webapps\ROOT\Code\05\WEB-INF\classes\test目录下。
3.我启动Tomcat 4.1在IE地址栏中输入http://localhost:8080/Code/05/05_01.jsp来测试。
4.我的05_01.jsp文件内容如下:
<html>
<head>
<title>一个简单的使用JavaBean的例子</title>
</head>
<%@page contentType="text/html; charset=gb2312"%>
<jsp:useBean id="mybean" class="test.MyBean" />
<body>
<h2>这是一个使用JavaBean的简单例子。</h2>
<%!
String str1="这里调用了JavaBean中的方法。";
String str2="不是吗?";
%>
<%
mybean.setValue(str1);
str2=mybean.getValue()+str2;
%>
<h3>
<%=str2%>
</h3>
</body>
</html>
5.我的MyBean.java原文件内容如下:
package test;
public class MyBean{
private String str;
private int num;
//初始化
public MyBean(){
str="This is the initial value.";
num=0;
}
//设置str
public void setvalue(String avalue){
str=avalue;
}
//得到str
public String getvalue() {
return str;
}
//设置number
public void setnumber(int Number)
{
num=Number;
}
//得到number
public int getnumber()
{
return num;
}
}
错误报告如下:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 5 in the jsp file: /Code/05/05_01.jsp
Generated servlet error:
[javac] Compiling 1 source file
D:\program files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\Code\05\_05_01_jsp.java:51: package test does not exist
test.MyBean mybean = null;
^
An error occurred at line: 5 in the jsp file: /Code/05/05_01.jsp
Generated servlet error:
D:\program files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\Code\05\_05_01_jsp.java:53: package test does not exist
mybean = (test.MyBean) pageContext.getAttribute("mybean", PageContext.PAGE_SCOPE);
^
An error occurred at line: 5 in the jsp file: /Code/05/05_01.jsp
Generated servlet error:
D:\program files\Apache Group\Tomcat 4.1\work\Standalone\localhost\_\Code\05\_05_01_jsp.java:56: package test does not exist
mybean = (test.MyBean) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "test.MyBean");
^
3 errors
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:130)
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:293)
at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:353)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:370)
......
6 楼
kingzhm [专家分:450] 发布于 2005-08-25 09:42:00
3楼说的对
错就错在Nowtime.getDate() 你在写Bean的时候定义的ID名称叫nowtime 到时候就应该写成nowtime.方法
在有就是<%@ page import="date.nowtime"%>
<jsp:useBean id="nowtime" class="date.nowtime" scope="page" />
这两句写一个就行了,2个看起来有多余
7 楼
zroom [专家分:0] 发布于 2005-09-03 11:13:00
没找到包啊!
应该是包的位置没放对
8 楼
martinqq [专家分:0] 发布于 2006-01-25 18:28:00
路径问题,并且也注意setxxx的大小写一致
把test目录copy到root目下的WEB-INF中的classes目录下即可
我初学。。。
测试出来了!!
9 楼
justforfun626 [专家分:18460] 发布于 2006-01-26 05:25:00
[quote]路径问题,并且也注意setxxx的大小写一致
把test目录copy到root目下的WEB-INF中的classes目录下即可
我初学。。。
测试出来了!![/quote]
setxxx WRONG!!!!
It must be setXxx() for javabean introspection!!!!
10 楼
sean666 [专家分:300] 发布于 2006-02-09 14:48:00
楼主类名也不大写,
注意写法规范,在学习时会省很多事。
我来回复