当前页面: 开发资料首页 → JSP 专题 → jsp引用javaBean的问题
jsp引用javaBean的问题
摘要: jsp引用javaBean的问题
小弟是个新手,最近看到一本书上有个例子,想试试,总是不成功,各位大虾帮帮忙,帮我看看到底是哪里出了问题。
服务器是Tomcat 5.5
自己建了个MyApp的目录:./Tomcat 5.5/webapps/ROOT/MyApp
在./Tomcat 5.5/webapps/ROOT/MyApp/WEB-INF/classes下部署javaBean
BeanAdd.java的源码如下:
public class BeanAdd
{
private double intA; //输入
private double intB; //输出=输入+1
public void setA(double intA)
{
this.intA=intA;
}
public void setB(double intB)
{
this.intB=intB;
}
public double getA(double intA)
{
return intA;
}
public double getB(double intB)
{
return intB;
}
public void BeanAdd()
{
this.intB=this.intA+1;
}
}
然后jsp文件部署在./Tomcat 5.5/webapps/ROOT/MyApp下
BeanAdd.jsp源码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<head>
引用javaBean</head>
<body>
<% //输出结果到页面
BeanAdd.BeanAdd();
out.println(BeanAdd.getB());
%>
<form id=frmBeanAdd name=frmBeanAdd method=get>
<table width=600>
<tr>
<td>第一个参数:</td>
<td><input type=text id=intA name=intA value=""></td>
</tr>
<tr>
<td colspan=2><input type=submit id=btnSubmit name=btnSubmit value="提交"></td>
</tr>
</table>
</form>
</body>
然后打开IE,地址为:http://localhost:8080/MyApp/BeanAdd.jsp
前台页面没问题
提交后报错
description:
The server encountered an internal error () that prevented it from fulfilling this request.
exception:
org.apache.jasper.JasperException: /MyApp/BeanAdd.jsp(3,1) SetProperty: Mandatory attribute name missing
我不知道究竟问题出在哪,那位大虾帮我修改一下,注解最好详细一点,谢谢
就是那个
*号的问题了
你的class必须放在包里面,然后把路径写正确。。
MARK
试过了
还是不行
你试了什么了??
---------------这个地方错了啊----------------------
是设置bean里面字段的属性,你看你设置的是什么????
你这样修改一下,
你的id名不要和bean名一样,还有你的BeanAdd文件不要放在根目录下啊,需要放到一个package里面啊。。例如我的包名叫做com.company,你把你的BeanAdd放到com.company包下面。
按上面的改好后再试一下。
哭
我建了一个package,
package testBean;
public class BeanAdd
{......}
还是报错
SetProperty: Mandatory attribute name missing
有没有现成得比较简单的例子?
呵呵,是你们在开玩笑,还是我孤陋寡闻?jsp:setProperty 啥时候有"id"属性了?明明是"name"好吧?
还没有解决吗?
这里的id不需要指定的.你在value="10.5"/>,这样写啊.
name 指定哪个bean也就是某个bean的id,如果你再在这里写一个id="a"就表示,那么你在下边中用到name="a"有话就指定了id="a"所向的属性了.慢慢理解一下哦
<%
%>
在下边的某处这样写的话
(这里是不是用我不记得了)它就会输入出10.5
好像是没有id属性的
给你个最简单以后不会犯的解决方法,你用开发工具eclipse3.2+myeclipse5.1在JSP页面你用到哪个类你就导哪个,别用*,当你输入包名时候,按.就能列出所有包中类了
就直接
把里的边的id都改一下吧,换成这样试一下
这里的name指定是哪个bean用它的id.这里也就是"be"
还有一个问题,你在请求这个页面之前要确保请求里有"intA","intB"这两个参数啊,要不然用
是没有意义,用"*"表求将从请求中取得所有以属性命名的参数.如果说你的请求没有这样的参数,你可以指定value给它.
不是包的问题,是属性的问题吧.
改了
报错变成
/MyApp/BeanAdd.jsp(2,0) The value for the useBean class attribute BeanTest.BeanAdd is invalid.
这是怎么回事?
BeanTest在哪出现了??
晕了,问你一个问题,你这个jsp页面想做什么样的.....
package testBean;
public class BeanAdd
{......}
自己建了个MyApp的目录:./Tomcat 5.5/webapps/ROOT/MyApp
jsp文件在:./Tomcat 5.5/webapps/ROOT/MyApp/BeanAdd.jsp
在./Tomcat 5.5/webapps/ROOT/MyApp/WEB-INF/classes下部署javaBean
生成./Tomcat 5.5/webapps/ROOT/MyApp/WEB-INF/classes/testBean/BeanAdd.class
我就是想学怎调用javaBean, 在jsp里输入一个数,提交后,通过javaBean处理加1后,在本页显示出来,很简单的,可是我就是得不到结果,郁闷阿
是不是我部署的有问题
/MyApp/BeanAdd.jsp(2,0) The value for the useBean class attribute testBean.BeanAdd is invalid.
不是的,你等下,我在帮你试
我晕了,你写的类有严重的问题
package testBean;
public class BeanAdd
{
private double intA; //输入
private double intB; //输出=输入+1
public double getIntA() {
return intA;
}
public void setIntA(double intA) {
this.intA = intA;
}
public double getIntB() {
return intB;
}
public void setIntB(double intB) {
this.intB = intB;
}
public void BeanAdd()
{
this.intB=this.intA+1;
}
}
text的name要和bean里setName的名一样,还有setproperty 后是name 不是id,应该就这样了,新手见笑了:)
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<head>
引用javaBean
</head>
<body>
<% //输出结果到页面
be.BeanAdd();
out.println(be.getIntB());
%>
<form id=frmBeanAdd name=frmBeanAdd method=get>
<table width=600>
<tr>
<td>第一个参数:</td>
<td><input type=text name=intA></td>
</tr>
<tr>
<td colspan=2><input type=submit id=btnSubmit name=btnSubmit value="提交"></td>
</tr>
</table>
</form>
</body>
他的get/set方法都没有写对...我的经验还是少了点
听取大家意见,修改如下
文件部署不变
testBean.class源码修改如下:
package testBean;
public class BeanAdd
{
private double intA;
private double intB;
public void setA(double intA)
{
this.intA=intA;
}
public void setB(double intB)
{
this.intB=intB;
}
public double getA()
{
return intA;
}
public double getB()
{
return intB;
}
public void BeanAdd()
{
this.intB=this.intA+1;
//intB=10.9;
}
}
BeanAdd.jsp源码修改如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<head>
引用javaBean
</head>
<body>
<%//=BeanAdd.getA()%>
<%
a.BeanAdd();
out.println(a.getB());
%>
<%=BeanAdd.getB()%>
<form id=frmBeanAdd name=frmBeanAdd method=get>
<table width=600>
<tr>
<td>第一个参数:</td>
<td><input type=text id=intA name=intA value=""></td>
</tr>
<tr>
<td colspan=2><input type=submit id=btnSubmit name=btnSubmit value="提交"></td>
</tr>
</table>
</form>
</body>
现在运行时报错:
org.apache.jasper.JasperException: Unable to compile class for JSP
Generated servlet error:
Only a type can be imported. testBean.BeanAdd resolves to a package
An error occurred at line: 4 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
testBean.BeanAdd cannot be resolved or is not a type
An error occurred at line: 4 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
testBean.BeanAdd cannot be resolved or is not a type
An error occurred at line: 4 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
testBean.BeanAdd cannot be resolved or is not a type
An error occurred at line: 18 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
BeanAdd cannot be resolved
哪位大哥帮我修改一下!
你的get/set方法还是错了啊,用我的代码试一下啊...我的代码测试通过了,在我的电脑上
是setIntA()不是setA(),其他同理
我晕,你不要乱来啊.里的id
跟里的name要一样的啊.
我已经不行了,都快要崩溃了
testBean.class源码修改如下:
package testBean;
public class BeanAdd
{
private double intA; //输入
private double intB; //输出=输入+1
public double getIntA() {
return intA;
}
public void setIntA(double intA) {
this.intA = intA;
}
public double getIntB() {
return intB;
}
public void setIntB(double intB) {
this.intB = intB;
}
public void BeanAdd()
{
this.intB=this.intA+1;
}
}
BeanAdd.jsp源码修改如下:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<head>
引用javaBean
</head>
<body>
<% //输出结果到页面
be.BeanAdd();
out.println(be.getIntB());
%>
<form id=frmBeanAdd name=frmBeanAdd method=get>
<table width=600>
<tr>
<td>第一个参数:</td>
<td><input type=text name=intA></td>
</tr>
<tr>
<td colspan=2><input type=submit id=btnSubmit name=btnSubmit value="提交"></td>
</tr>
</table>
</form>
</body>
执行后报错:
org.apache.jasper.JasperException: Unable to compile class for JSP
Generated servlet error:
Only a type can be imported. testBean.BeanAdd resolves to a package
An error occurred at line: 4 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
testBean.BeanAdd cannot be resolved or is not a type
An error occurred at line: 4 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
testBean.BeanAdd cannot be resolved or is not a type
An error occurred at line: 4 in the jsp file: /MyApp/BeanAdd.jsp
Generated servlet error:
testBean.BeanAdd cannot be resolved or is not a type
应该是你的环境问题了,我的代码是测试后才给你帖出来的
有可能
我再试试吧
谢谢各位老大
public void BeanAdd(),你把void去掉试试
JavaBean的源码:
package testBean;
public class BeanAdd {
private double intA;
private double intB;
public BeanAdd() {
}
public void setIntA(double intA) {
this.intA = intA;
}
public void beanAdd() {
this.intB = this.intA + 1;
// intB=10.9;
}
public double getIntB() {
return intB;
}
public void setIntB(double intB) {
this.intB = intB;
}
public double getIntA() {
return intA;
}
}
jsp的源码:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<head>
引用javaBean
</head>
<body>
<%
a.beanAdd();
out.println(a.getB());
%>
<%=a.getB()%>
<form id=frmBeanAdd name=frmBeanAdd method=get>
<table width=600>
<tr>
<td>
第一个参数:
</td>
<td>
<input type=text id=intA name=intA value="">
</td>
</tr>
<tr>
<td colspan=2>
<input type=submit id=btnSubmit name=btnSubmit value="提交">
</td>
</tr>
</table>
</form>
</body>
这根JDK有没有关系
以前我装了一个J2EE 1.4
JavaBean实用它编译的
Apache Tomcat需要J2SE 1.5的支持
所以我现在的系统有两个JDK
他们会不会冲突,或者有不兼容的地方