我正在学习如何使用jsp和bean,并且无法理解我遇到的问题。
我正在尝试创建一个这样的bean: ...
我收到了错误:
java.lang.InstantiationException:在范围
中找不到bean保留我在网上浏览过,大多数人似乎建议使用class =“...”而不是type =“...”,或者使用import语句。我已经做了前者并尝试了后者......任何想法?
这是豆子:
package homework10;
public class Reservation {
private int groupSize;
private String status;
private double cost;
private boolean triedAndFailed;
public Reservation(){
}
public void setGroupSize(int gs)
{
groupSize = gs;
}
public int getGroupSize()
{
return groupSize;
}
public void setStatus(String str)
{
this.status = str;
}
public String getStatus()
{
return status;
}
public void setCost(double cost)
{
this.cost = cost;
}
public double getCost()
{
return cost;
}
public void setTriedAndFailed(boolean bool)
{
this.triedAndFailed = bool;
}
public boolean isTriedAndFailed()
{
return triedAndFailed;
}
}
这是jsp页面的开头:
<head>
<!--<script type="text/javascript" src="functions8.js">
</script>-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>BHC Calculator-HTML-validation + Servlet Version</title>
<jsp:useBean id = "reservation" class = "homework10.Reservation" scope = "session" />
</head>
提前致谢!
答案 0 :(得分:5)
java.lang.InstantiationException
这基本上用普通的Java术语表示以下构造
import homework10.Reservation;
// ...
Reservation reservation = new Reservation();
失败了。
有很多可能的原因:
根据目前为止提供的代码,并假设您100%确定您正在运行您认为正在运行的代码,那么这只会导致#1或#2。该类是公共的,并且有一个公共默认构造函数,它基本上什么也没做。所以#3,#4和#5都可以划伤。
要修复可能的原因#1,请确保路径
中的webapp部署中存在类文件
/WEB-INF/classes/homework10/Reservation.class
。为了解决可能的原因#2,您还应该确保在保留包结构的同时以正确的方式编译类。所以,当你没有使用像Eclipse那样的IDE,但是你在命令提示符下摆弄低级别时,那么你应该确保在编译类时包含该包。
关于您找到的可能解决方案,
并且大多数人似乎建议使用class =“...”而不是type =“...”
这是对的。要了解更多信息,请转到这个答案:javax.servlet.ServletException: bean [name] not found within scope但是,这显然不是您特定情况下的原因,因为它显然无法解决问题。
或使用导入声明
这没有任何意义。那些人对 scriptlet 感到困惑。他们应该avoided到所有程度。实际上<jsp:useBean>
也是如此,但这是一个不同的故事。另请参阅our Servlets wiki page以获取一些提示。