`
wantingqiang
  • 浏览: 24532 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

The value for the useBean class attribute is inval

阅读更多

  这几天在调一个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 中的内容,重起服务器。 此外,配置动态类加载对开发而言是个不错的选择。

 

原文链接:http://www.cnblogs.com/feiweiwei/archive/2007/12/05/984484.html

分享到:
评论

相关推荐

    科技企业信息管理代码

    科技企业信息管理 ...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事例jsp usebean session

    在JavaServer Pages (JSP) 技术中,`useBean` 指令和 `session` 对象是两个核心概念,它们对于构建动态、数据驱动的Web应用程序至关重要。在这个事例中,我们将深入探讨如何在JSP中利用 `useBean` 指令创建并管理...

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

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:myDatabase"; // 替换为你的数据库名 conn = DriverManager.getConnection(url, "", ""); // 填写用户名和密码,如果有的话 } catch ...

    JSP+UseBean网上购书系统

    例如,可以有一个`BookBean`类来存储书籍的属性,然后在JSP中使用`&lt;jsp:useBean id="book" class="com.example.BookBean" scope="session"&gt;`来实例化和管理这个Bean。 2. **业务逻辑处理**:在购书系统中,...

    jsp+servlet+usebean实现MVC

    &lt;jsp:useBean id="user" class="com.example.UserBean" scope="request" /&gt; ``` - **EL和JSTL**:接着,我们可以使用EL表达式和JSTL标签从模型中获取数据并在页面上展示。例如,显示用户名: ```jsp 用户名: ${...

    SCWCD-310-081.pdf

    This certification is designed to assess and validate the skills required for developing web components in the J2EE environment. #### Exam Information - **Exam Code**: 310-081 - **Title**: Sun ...

    jsp标准动作

    该标记的语法格式为:&lt;jsp:useBean id="bean name" class="class name" /&gt;,其中 id 属性指定了 Bean 的名称,class 属性指定了 JavaBean 的类名。 jsp:setProperty 标记用于设置 Bean 的属性。该标记的语法格式为...

    usebean.jsp

    usebean.jsp

    JSP Javabean

    &lt;jsp:setProperty name="myBean" property="myText" value="Hello, this is the result of the first setProperty." /&gt; ``` 3. **获取属性值**:使用`&lt;jsp:getProperty&gt;`标签读取和输出JavaBean的属性值。例如: ```...

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

    在Java Web开发中,Servlet、JSP(JavaServer Pages)和UseBean是核心的技术组件,它们主要用于构建动态网站。这个未完成的个人留言板项目恰好涵盖了这些技术,让我们深入了解一下它们。 1. **Servlet**: Servlet...

    WEB开发之JSP的三种注释方式.docx

    &lt;jsp:useBean id="BeanName" class="BeanClass" scope="page|request|session|application"/&gt; ``` 这里的`id`属性定义了Bean的唯一标识,`class`属性指定Bean的全限定类名,`scope`属性定义了Bean的作用域,可以是`...

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

    在JavaServer Pages (JSP) 中,`&lt;jsp:useBean&gt;` 标签用于实例化一个Java对象,通常是从一个JavaBean。在这个特定的情景中,我们关注的是将字符串转换为Date类型的处理,这在处理日期相关的数据时非常常见。在JSP中,...

    jsp基本语法(指令,包括各种动作,表达式,内置对象等)

    &lt;%@ page attribute="value" %&gt; ``` **示例**: ```jsp ; charset=UTF-8" %&gt; ``` #### Taglib指令 Taglib指令用于引入自定义标签库,这些标签库可以简化常见的JSP操作。 **JSP语法**: ```jsp ``` **示例**: ```...

    班级信息管理”功能页面的源代码

    - `&lt;jsp:useBean id="class_select" class="classman.class_operation" scope="page"/&gt;` 创建了一个名为`class_select`的JavaBean实例,其类名为`classman.class_operation`,作用域为页面。 - `...

    自定义标签教程

    &lt;jsp:useBean class="java.util.HashMap" id="deleteParams"/&gt; ("id", cd.getId()); deleteParams.put("method", "delete"); %&gt; &lt;!-- Pass the map named deleteParams to html:link to generate the request ...

    jsp常用标签

    * jsp:setProperty 出现在 jsp:useBean 标签内:&lt;jsp:useBean id="myUser" … &gt; … … /&gt; &lt;/jsp:useBean&gt; JSP 中的这些指令可以帮助开发者更方便地实现不同的功能,提高开发效率和代码可读性。

    精通Struts书中讲解beantaglibs的例子

    &lt;jsp:useBean id="beanId" class="fully.qualified.BeanClassName" scope="page|request|session|application"/&gt; ``` 其中,`id`是JavaBean在页面范围内的标识符,`class`是JavaBean的全限定类名,`scope`定义了...

    javabean组件程序设计.pptx

    - `jsp:useBean`用于在指定范围内查找或创建JavaBean实例,如`&lt;jsp:useBean id="beanId" scope="page|request|session|application" class="package.class"/&gt;`。 - `jsp:setProperty`用于设置JavaBean的属性值,如...

    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=...

Global site tag (gtag.js) - Google Analytics