回 帖 发 新 帖 刷新版面

主题:我以为很容易的JavaBean为什么连测试都不成功?求救!!

我是新手!!一般的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个回复)

沙发

你lwd.jsp 的第二句错误:
<%@ import="date.nowtime"%>
应改为:
<%@ page import="date.nowtime"%>
此外,既然没有参数输入,也就没必要如下语句:
<jsp:setProperty name="nowtime" property="*"/>

板凳

我看了别人的帖子
输出部分是这样写的:
......

<%
out.print("<h1>javabean</h1><br>");
    String date=nowtime.getDate();
%>
<%=date%>


那用out.print(Nowtime.getDate());不能直接输出吗?为什么?

3 楼

out.print(Nowtime.getDate());
在语法正确的前提下是没有问题的,主要是Nowtime.getDate(),Nowtime是什么?在哪定义了?类名么?如果是类名,getDate()就要是静态方法,
你程序中的<jsp:setProperty name="nowtime" property="*"/>是多余的,可能你还不知道这句是做什么用的

4 楼

是的  我真的不知道!或许我看的书太少了!!我现在对javabean越来越不懂了!!
hlnccc假如用out.print(Nowtime.getDate());输出 那我到底应该怎么写呢?

5 楼

我这里还有另外的一个例子!!是从光盘上弄来的!!代码应该不错!!但是我还是运行不了啊!!怎么办啊?
我运行这个例子的步骤如下:
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 楼

3楼说的对
错就错在Nowtime.getDate()  你在写Bean的时候定义的ID名称叫nowtime 到时候就应该写成nowtime.方法

在有就是<%@ page import="date.nowtime"%>
<jsp:useBean id="nowtime"  class="date.nowtime" scope="page" />
这两句写一个就行了,2个看起来有多余

7 楼

没找到包啊!
应该是包的位置没放对

8 楼

路径问题,并且也注意setxxx的大小写一致
把test目录copy到root目下的WEB-INF中的classes目录下即可
我初学。。。
测试出来了!!

9 楼

[quote]路径问题,并且也注意setxxx的大小写一致
把test目录copy到root目下的WEB-INF中的classes目录下即可
我初学。。。
测试出来了!![/quote]

setxxx WRONG!!!!

It must be setXxx() for javabean introspection!!!!

10 楼

楼主类名也不大写,
注意写法规范,在学习时会省很多事。

我来回复

您尚未登录,请登录后再回复。点此登录或注册