`
dowhathowtodo
  • 浏览: 771386 次
文章分类
社区版块
存档分类
最新评论

The value for the useBean class attribute is invalid 问题

 
阅读更多

这几天在调一个jsp的代码,要调用javabean,可是一直出问题,因为在代码中要调用jstl的标签,因此导入了jstl包,可是一调用 jstl的东西就报错说tld文件未定义,于是找了很多书看,我配置的一点问题都没有啊,那是怎么回事呢?百度了好久,才找到答案,原来是jsp版本的问题,在jsp2.0以后的版本调用jstl的东西,要把<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 改为
<%@taglib prefix="c"uri="http://java.sun.com/jstl/core_rt" %>
现在可以使用jstl了,可是又出现了一个问题,就是不能通过usebean调用我的bean文件,找了很多资料都没用,后来发现自己犯了一个很低级的错误,我居然给javabean定义了一个带参数的构造函数,javabean的第一条就是不能定义带参数的构造函数!!!直接晕倒...
下面是其他可能造成题目上错误的原因

可见错误可能的原因包括:

1. 在编译 JSP 时(不是运行时),指定的 Bean 类没找到
2. Bean 虽然找到了,但是它不是 public 的,或者找到的 class 文件是 interface 或抽象类
3. Bean 类中没有 public 的默认构建函数

第二点很明显,不用多解释,最经常发生的情况是 Bean 类忘了声明为 public 。

第三点中需要注意的是,如果你的 Bean 类没有提供任何构造函数,将自动生成一个默认构建函数,这没有问题。但是,如果你有构造函数,则不会自动生成该默认构造函数。经常被忽略的问题是写了默认构造函数却不是 public 的。

第一点看起来简单,不过却最令人头痛,尤其是在开发环境里。这里需要注意的是,"在编译 JSP 时",意味着引用 Bean 的 JSP 是新的,或者刚刚更新过,或者 TOMCAT_HOME/work 中的编译结果被清除了。此时,Tomcat 将自动(重新)编译该 JSP,此时如果发现 Bean 没找到,就会报这个错。情况因为 JSP 或者 Bean 类正在开发而变得复杂,一一列举所有情况没有意义,这里我举一些典型例子,借此应该可以举一反三:

如果 JSP 编译结果存在,且 JSP 没有更新,Tomcat 不会重新编译 JSP,同时默认情况也不会自动重新加载更新过的 Bean 类(参考 http://jakarta.apache.org/tomcat/tomcat-5.5-doc/config/context.html 中的 reloadable)。所以,你会发现此时即使删除了 Bean 类都没有问题,当然,更新 Bean 类也不会有什么用。如果在 JSP 编译产生之后,我们重起了服务器,由于 JSP 文件编译的结果存在,所以,可以仍然访问 JSP 页面,而不必重新编译。可是如果访问前,删掉了 Bean 类,就会报过 ClassNotFoundException 而不是上述错误。关键在于 JSP 是否经过编译,没有编译则没有找到类报告题目中的编译错误 ,编译过则是 ClassNotFoundException 运行时实例化错误。


还有一个更为特殊的例子。如果 Web 应用在启动时, WEB-INF/classes 目录不存在,则在启动应用后,新建 classes 目录,动态添加新的类进去是没有用的,会报告同样的错误。原因是此时的 Tomcat 不会去检查该目录,也就不会找到你需要的类。尽管这个问题的复杂场景可能不一而足,不过解决它的办法却很简单:停止服务器,确认你的 JSP 和 Bean 正确部署,清理掉 TOMCAT_HOME/work 中的内容,重起服务器。 此外,配置动态类加载对开发而言是个不错的选择。

分享到:
评论

相关推荐

    科技企业信息管理代码

    科技企业信息管理 ...The value for the useBean class attribute MD5.MD5 is invalid 猜测的话 useBean这个BEAN你没定义 自然他的属性MD5.MD5也就不存在了`` 好好看看你的WEB.XML等配置文件是不是少写了什么

    JSP Simple Examples

    This package is imported in the jsp page so that the Date class and its properties can accessed in the JSP page. If- Else Ladder A ladder means a vertical set of steps. It is a computer generated ...

    JSP useBean连接 Access 数据库,不使用数据源

    JSP useBean连接 Access 数据库,不使用数据源

    jsp事例jsp usebean session

    jsp设计事例jsp usebean session

    jsp+servlet+usebean实现MVC

    jsp+servlet+usebean实现MVC

    JSP+UseBean网上购书系统

    这是一个我自己用JSP+USEBEAN写的系统,

    usebean.jsp

    usebean.jsp

    jsp编程关于上传下载设计

    &lt;jsp:useBean id="updateBean" scope="page" class="guest.guest" /&gt; &lt;HTML&gt; &lt;BODY BGCOLOR="white"&gt; &lt;H1&gt;jspSmartUpload : Sample 2&lt;/H1&gt; &lt;HR&gt; String name = (String) session.getValue(...

    jsp音乐网源码

    &lt;input name="lrcUp" type="button" class="btn_grey" value="上传文件" disabled="none" onClick="if(this.form.fileURL.value!=''){window.open('upLrcFile.jsp?fileName='+this.form.fileURL.value,'','width=...

    jsp结合javabean的实践

    &lt;jsp:useBean id="rd" class="songyc.ReadFile" scope="application"&gt; &lt;jsp:setProperty name="rd" property="path" value="d:/testsongyc.txt" /&gt; &lt;/jsp:useBean&gt; HashMap hm=new HashMap(); Double db=null;...

    学习servlet,jsp,usebean,数据库封装的不错方法

    未完成的个人留言板,喜欢的接下去吧。本来是展示给最爱的师父的,可惜错过了,无限的遗憾,期待未完待续的结局 ,赫赫

    WebGIS的开发资料

    &lt;jsp:useBean id="connection"class="com.esri.aims.mtier.io.ConnectionProxy"scope="page"/&gt;&lt;jsp:useBean id="map"class="com.esri.aims.mtier.model.map.Map"scope="page"/&gt; connection.setConnectionType("tcp...

    jsp中文乱码问题jsp中文乱码问题详解

    对常见中文乱码问题进行了详细介绍和解释,希望能给大家以帮助。

    Jsp:useBean中字符串转化为Date类型的操作方法

    NULL 博文链接:https://zywang.iteye.com/blog/412922

    regedit.jsp 表单注册用户名密码

    &lt;jsp:useBean id="query" class="Bean.QueryBean" scope="session"&gt; *"/&gt; &lt;/jsp:useBean&gt; request.setCharacterEncoding("UTF-8"); String name=request.getParameter("username"); String password=request....

    jspSmartUpload上传下载

    &lt;jsp:useBean id="jdbc" class="com.Jdbc_conn" scope="page" /&gt; (); java.util.Date todayime = new java.util.Date(today); SimpleDateFormat formatter = new SimpleDateFormat("yyMMddHHmmss"); String ...

    JSP数据库操作例程(Use Bean)

    – 数据分页显示 – JDBC 2.0:ODBC 通过jdbc:odbc可以实现Jsp对数据库的操作,在这个例子中我将数据库的连接写在了一个JavaBean中,可以实现重复使用 pagetest.jsp文件: &lt;!...&#37;...jsp:useBean id=

    spring技术入门相关源码

    public class SpringTest { public static void main(String[] args) { //创建spring的ApplicationContext ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //...

    jsp标准动作

    详细介绍了jsp标准动作各个标记及其属性的使用方法。

    课程设计(JSP)代码第2章

    &lt;jsp:useBean id="db" class="dbBean.DBBean" scope="session"/&gt; &lt;jsp:setProperty name="db" property="connStr" value="jdbc:odbc:vote"/&gt; &lt;html&gt;&lt;body&gt; 您最喜爱的奥斯卡获奖影片是: ResultSet rs=db....

Global site tag (gtag.js) - Google Analytics