站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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
他们会不会冲突,或者有不兼容的地方


↑返回目录
前一篇: 应用OSCache提升J2EE系统运行性能
后一篇: 判断是不是非法登陆代码放在哪个位置?