注册 登录
编程论坛 J2EE论坛

beans运行出错

hongbooboo 发布于 2006-03-18 20:42, 1618 次点击
我的beans 程序是这样的
Circle.java

import java.io.*;
public class Circle
{int radius ;
public Circle()
{radius=1;
}
public int getRadius()
{return radius;
}
public void setRadius(int newRadius)
{radius=newRadius;
}
public double circleArea()
{return Math.PI*radius*radius;
}
public double circleLength()
{return 2.0*Math.PI*radius;
}
}



useBeans.jsp

<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="Circle" %>
<HTML>
<BODY begcolor=cyan><Font sized=1>
<jsp:useBean id="girl" class="circle" scope="page" >
</jsp:useBean>
<%
girl.setRadius(100);
%>
<p>圆的半径
<%=girl.getRadius() %>
<p>圆的周长
<%=girl.circleLength() %>
<p>圆的面积
<%=girl.circleArea() %>
</BODY>
</HTML>

我的useBeans.jsp放在C:\Tomcat 5.5\webapps\ROOT里
我的Circle.class放在C:\Tomcat 5.5\classes
帮我看看啊,哪里错了啊



26 回复
#2
hongbooboo2006-03-18 20:43

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /useBeans.jsp(5,0) The value for the useBean class attribute circle is invalid.
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

root cause

org.apache.jasper.JasperException: /useBeans.jsp(5,0) The value for the useBean class attribute circle is invalid.
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
	org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174)
	org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
	org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
	org.apache.jasper.compiler.Generator.generate(Generator.java:3304)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.16 logs.


Apache Tomcat/5.5.16


这个是运行的页面,哪里错了啊 

#3
dreame2006-03-18 21:52
你在javabean中写一个包如:package my; 然后将java 文件编译,class文件放在webapps\ROOT\WEB-INF\classes\my目录下试试

[此贴子已经被作者于2006-3-18 22:11:42编辑过]

#4
hongbooboo2006-03-19 10:06
那useBeans.jsp是放在C:\Tomcat 5.5\webapps\ROOT是吗,
还是不行啊


拜托再帮我看看啊

exception

org.apache.jasper.JasperException: /useBeans.jsp(5,0) The value for the useBean class attribute circle is invalid.

root cause

org.apache.jasper.JasperException: /useBeans.jsp(5,0) The value for the useBean class attribute circle is invalid
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.16 logs.




#5
dreame2006-03-19 22:27

是放那里的!!楼主你不小心写错个东东哦----<jsp:useBean id="girl" class="circle" scope="page" > 应该改为
包名称.Circle!!区分大小写的!
你有没有建虚拟目录?有的话放在WEB-INF\classes\my目录!


PS:错误信息里不是有提示了么,楼主可要仔细看哦!!

[此贴子已经被作者于2006-3-19 22:36:17编辑过]

#6
hongbooboo2006-03-20 11:24
虚拟目录是什么啊
怎么建啊,
我是初学者,不懂啊
#7
dreame2006-03-20 11:47

虚拟目录可以不用建的!
虚拟目录可以允许你连接到一个独立的文件夹,感觉上好象服务器根文件一样!

1.打开”\tomcat 5.5\conf”文件夹
2.用记事本打开server.xml,添加此Web应用的context。即,在</Host>的上面添加:

<Context path=”/test” docBase=”E:\Documents and Settings\student\workspace\test2\WebRoot” debug=”0” reloadable="true"
trusted="false"/>

注意:path的值是虚拟目录
docbase的值是你的硬盘的的目录的绝对路径。
地址烂输入:http://localhost:8080/path/**.jsp

#8
by_fish2006-03-20 12:47
这位"落花流水"仁兄在吗???

我怎么把我的编译过的文件放到自己的虚拟目录下怎么不行啊,提示找不到那个包... ...
但放到原安装目录就没问题,通过!!!

#9
hongbooboo2006-03-20 21:25
恩,我换了一个javabeans的测试程序,结果是能显示的
但是就是这个程序不对,是我从书上看的,
能不能帮我看看这个程序有什么错误啊
那个Circle我改了,可还是不对,拜托啦
<HTML>
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="Circle"%>
<HTML>
<BODY bgcolor=cyan><Font size=1>
<jsp:useBean id="girl" scope="page" class="my.Circle" >
</jsp:useBean>
<%
girl.setRadius(100);
%>
<p>圆的半径是:
<%=girl.getRadius() %>
<P>圆的周长是:
<%=girl.circleLength() %>
<p>圆的面积是:
<%=girl.circleArea() %>
</BODY>
</HTML>
#10
hongbooboo2006-03-20 21:27

package my;
import java.io.*;
public class Circle
{int radius ;
public Circle()
{radius=1;
}
public int getRadius()
{return radius;
}
public void setRadius(int newRadius)
{radius=newRadius;
}
public double circleArea()
{return Math.PI*radius*radius;
}
public double circleLength()
{return 2.0*Math.PI*radius;
}

}

#11
dreame2006-03-20 21:43
<%@ page import="Circle"%>
这句可以去掉的!!确定在classes目录下建立以包名命名的文件夹!!仔细检查下应该能显示结果的!!你的程序没有问题,我电脑上能显示!楼主出现什么错误呢??

[此贴子已经被作者于2006-3-20 21:49:47编辑过]

#12
dreame2006-03-20 21:46
以下是引用by_fish在2006-3-20 12:47:00的发言:
这位"落花流水"仁兄在吗???

   我怎么把我的编译过的文件放到自己的虚拟目录下怎么不行啊,提示找不到那个包... ...
   但放到原安装目录就没问题,通过!!!

            

你必须把你编译过的包放到虚拟目录\WEB-INF\classes\包名称\目录下,估计你是没有建立以包名命名的文件夹

[此贴子已经被作者于2006-3-20 21:46:52编辑过]

#13
hongbooboo2006-03-20 22:38

啊啊啊,真的,我把这句
<%@ page import="Circle"%>
去掉后能运行出来了啊,
太感谢了啊

#14
hongbooboo2006-03-20 22:43
我想做个留言板,应该怎么开始啊,给我点意见啊
#15
光光2006-03-20 23:14
请问落花流水
你的那个MY文件夹怎么建的,是直接建,还是用SERVER。XML文件配置呀
#16
光光2006-03-20 23:41
落花流水,我也弄出来拉,但是我想知道为什么要去掉
<%@ page import="Circle"%>吗,又是为什么在MY(也是就自己建的)这个目录下就好使呢,楼主刚开始发的那个原程序我朋友怎么就运行出来了,我怎么就没运行出来呢
#17
光光2006-03-21 00:02
hongbooboo,我们交个朋友把,加我个Q把,就说你是hongbooboo就可以拉
#18
光光2006-03-21 00:19
还有落花流水也留个Q号把,或是直接加我的也行,楼主也一样
#19
dreame2006-03-21 22:31
以下是引用hongbooboo在2006-3-20 22:43:00的发言:
我想做个留言板,应该怎么开始啊,给我点意见啊

我也是刚开始学的呢,个人认为先要熟悉数据库的几个基本的操作!!互相学习嘛

#20
dreame2006-03-21 22:33
以下是引用光光在2006-3-20 23:41:00的发言:
落花流水,我也弄出来拉,但是我想知道为什么要去掉
<%@ page import="Circle"%>吗,又是为什么在MY(也是就自己建的)这个目录下就好使呢,楼主刚开始发的那个原程序我朋友怎么就运行出来了,我怎么就没运行出来呢

因为程序中已经有这样的一句话了<jsp:useBean id="girl" class="my.circle" scope="page" >
</jsp:useBean>,表明已经import了!!因为java文件中定义了包名,所以要建个文件夹来引用!!
ps:我也是新手!

[此贴子已经被作者于2006-3-21 22:44:31编辑过]

#21
by_fish2006-03-22 19:02

谢谢 "落花流水"

#22
hongbooboo2006-03-22 20:19
我在做用户注册的时候,beans里出现错误
String condition="INSERT INTO member VALUES"+"("+S+")";说找不到符号
这个句子是向数据中的member表添加记录,这样有什么不对吗
#23
dreame2006-03-22 22:49

应该是sql语句的问题!! "insert into 表名 (字段名1,字段名2) values('','')";你写的语句中有很多双引号,不能判断!!

#24
hongbooboo2006-03-23 09:41
能说详细点吗,我怎么改也改不出来啊,这个是我的程序:

这个是注册的beans
package my;
import java.sql.*;
public class Register
{String logname="",
password="",
sex="",age="",
email="",
phone="",
address="",
message="";
String backNews;
Connection con;
Statement sql;
ResultSet rs;
public Register()
{try{Class.forName("sun.jdbc.odbc.jdbcodbcDriver");}
catch(ClassNotFoundException e){}
}
public void setLogname(String name)
{logname=name;
}
public String getLogname()
{return logname;
}
public void setAge(String n)
{age=n;
}
public String getAge()
{return age;
}
public void setSex(String s)
{sex=s;
}
public String getSex()
{return sex;
}
public void setPassword(String pw)
{password=pw;
}
public String getPassword()
{return password;
}
public void setEmail(String em)
{email=em;
}
public String getEmail()
{return email;
}
public void setPhone(String ph)
{phone=ph;
}
public String getPhone()
{return phone;
}
public void setAddress(String ad)
{address=ad;
}
public String getAddress()
{return address;
}
public String getMessage()
{return message;
}
public void setMessage(String m)
{message=m;
}
public String getBackNews()
{return backNews;
}
public void setBackNews(String s)
{backNews=s;
}
public void addItem()
{try{
Connection con=DriverManager.getConnection("jdbc:odbc:friend","","");
sql=con.createStatement();
if(phone.length()==0)
{phone="wu";
}
if(email.length()==0)
{email="wu"; }
if(address.length()==0)
{address="wu"; }
if(message.length()==0)
{message="wu"; }
String s=
"'"+logname+"'"+","+"'"+password+"'"+","+"'"+sex+"'"+","+
"'"+age+"'"+","+"'"+phone+"'"+","+"'"+email+"'"+","+
"'"+address+"'"+"'"+"'"+message+"'";
String condition="INSERT INTO member VALUES"+"("+S+")";
sql.executeUpdate(condition);
backNews="zhuce chenggong";
con.close();
}
catch(SQLException e)
{backNews="ni hai mei zhu ce ,qi huan mingzi ";
}
}
}


但是编译不行啊,说是String condition="INSERT INTO member VALUES"+"("+S+")";   找不到符号
这是什么原因啊,帮我看看啊

#25
hongbooboo2006-03-23 10:13

那我要怎么写语句把记录添加进去啊

#26
hongbooboo2006-03-23 10:30

我这样改编译通过了,
是这样写的吗
String condition="INSERT INTO member VALUES('logname','password','sex','age','phone','phone','email','address','message')";

#27
dreame2006-03-23 14:14

INSERT INTO 语句

添加一个或多个记录至一个表。这叫作追加查询.

语法

多重记录追加查询:

INSERT INTO target [(field1[, field2[, ...]])][IN外部数据库]
SELECT field1[, field2[, ...]]
FROM tableexpression

单一记录追加查询:

INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])

INSERT INTO 语句可分为以下几个部分:

部分 说明
target 欲追加记录的表或查询的名称。
field1, field2 如果后面跟的是 target 参数,则为要追加数据的字段名;如果后面跟的是 source 参数,则为从其中获得数据的字段名。
Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句
source 复制记录的来源表或查询的名称。
tableexpression 从其中得到要插入的记录的表名。这个变元可能是一个单一的表名,也可能是一个由 INNER JOINLEFT JOINRIGHT JOIN 运算组成的复合体,或是一个储存的查询。
value1value2 欲插入新记录的特定字段的值。每一个值将依照它在列表中的位置,顺序插入相关字段:value1 将被插入至追加记录的 field1 之中,value2 插入至 field2,依此类推。必须使用逗点将这些值分隔,并且将文本字段用引号 (' ') 括起来。

例如:INSERT INTO Employees (FirstName,LastName, Title) VALUES ('Harry', 'Washington', 'Trainee');"
1