我现在正在学习如何使用jsp和bean,并且无法理解我遇到的问题。
我正在尝试创建一个像这样的bean:…
并得到错误:
java.lang.InstantiationException:在范围内找不到bean预留
我在网上四处看看,大多数人似乎建议使用class =“ …”而不是type =“ …”或使用import语句。我已经在做前者,并尝试过后者…有什么想法吗?
这是bean:
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>
提前致谢!
java.lang.InstantiationException
从根本上讲,这基本上意味着普通的Java术语,即以下结构
import homework10.Reservation; // ... Reservation reservation = new Reservation();
失败了。
造成这种情况的原因很多:
根据到目前为止提供的代码,并假设您100%确信正在运行自己认为正在运行的代码,那么这可能仅是原因1或原因2。该类是公共的,并且具有公共的默认构造函数,该构造函数基本上不执行任何操作。所以#3,#4和#5可能会被划伤。
要解决可能的原因1,请确保该类文件在path中的webapp部署中存在 /WEB-INF/classes/homework10/Reservation.class。要解决可能的原因2,您还应该确保在保留包结构的同时,以正确的方式编译了该类。因此,当您不使用像Eclipse这样的IDE时,但是在命令提示符下摆弄了低级代码时,则应确保在编译类时包括该包。
/WEB-INF/classes/homework10/Reservation.class
至于您发现的可能解决方案,
而且大多数人似乎建议使用class =“ …”而不是type =“ …”
没错 要了解更多信息,请转至以下答案:javax.servlet.ServletException:在范围内未找到bean[name]但是,这显然不是您的特定情况的原因,因为它显然没有解决问题。
或使用导入语句
这完全没有道理。那些人把 脚本弄 糊涂了。应尽量避免使用它们。该<jsp:useBean>还,实际上,但是这是一个不同的故事。
<jsp:useBean>