【问题标题】:Bean importing [JSP / Eclipse]Bean 导入 [JSP / Eclipse]
【发布时间】:2011-12-29 13:26:03
【问题描述】:

我对 Eclipse/JSP/Beans 相当陌生,但我必须创建一个项目,在我的 JSP 文件中使用 Beans。我有两个项目。 A) 包含 JSP 文件的 Maven 项目 B) 带有 Bean 的 EJB 项目

我尝试使用以下行在我的 JSP 文件中导入一个 bean:

<%@page import="beans.TestSessionBean"%>

我还将 EJB 项目添加到项目 A 的构建路径中(右键单击项目 A > 构建路径 > 配置构建路径 > 项目 > 添加),但这似乎没有帮助。

所以每当我尝试运行我的 JSP 文件时,我都会收到以下消息:

Only a type can be imported. beans.TestSessionBean resolves to a package

浏览互联网后.. 项目 A 似乎不包含项目 B 中的文件(bean)。最后这就是我的 WAR 文件内容的样子:

my-webapp
|-- META-INF
|   `-- MANIFEST.MF
|--maven
|  `-- directory
|      `-- directory
|         |--pom.properties
|         |--pom.xml
|-- WEB-INF
|   |-- classes
|   |   |-- files
|   |   |   `-- some_file.java
|   |-- glassfish-web.xml
|   `-- web.xml
`-- index.jsp

但是,我在另一个页面中看到它也应该包含来自项目 B 的 bean 文件,对吗? (或者我在这里把事情搞混了?)

我还想知道我是否可能需要编辑一些 XML 文件才能使这些东西正常工作。我不断遇到提到 WEB.xml 文件的搜索结果,但我不知道是否应该向其中添加任何内容。所以我的 WEB.xml 看起来像这样:

    <!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

    <web-app>
      <display-name>Archetype Created Web Application</display-name>
      <servlet>
        <servlet-name>tesLet</servlet-name>
        <display-name>tesLet</display-name>
        <description></description>
        <servlet-class>servlet.tesLet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>tesLet</servlet-name>
        <url-pattern>/tesLet</url-pattern>
      </servlet-mapping>
    </web-app>

我还有两个问题。如果我转到项目属性并将项目添加到项目首选项设置中会发生什么? (我的意思是如果我选中项目旁边的复选框之一)

Build Path 下“Order and Export”选项卡中的复选框有什么作用?

【问题讨论】:

  • 您正在尝试将 EJB 会话 bean 导入 JSP?

标签: java eclipse jsp import javabeans


【解决方案1】:

只能导入一个类型。 beans.TestSessionBean 解析为一个包

这是一个误导性错误。这实际上是一个NoClassDefFoundError。这意味着给定的类不在类路径中。

现在,您的项目结构显示

|-- WEB-INF
|   |-- classes
|   |   |-- files
|   |   |   `-- some_file.java

然而这是错误的。你不应该在那里有.java 文件,而是编译.class 文件。确保您拥有/WEB-INF/classes/beans/TestSessionBean.class。这应该可以修复特定错误。


与具体问题无关:尝试在 JSP 中导入 EJB 表明存在重大设计错误。我建议花一些时间学习servlets。此外,您的 web.xml 指定了 Servlet 2.3,它已有十多年的历史。目前尚不清楚您是否也真正部署到 Servlet 2.3 容器,但我也会尽可能将其升级到最新的 Servlet API 版本。

【讨论】:

  • 我得到了类的东西,但我开始怀疑它是否是 Maven eclipse 插件的问题。也许,它有问题,或者我可能必须以某种方式实际配置它以包含项目 B,即使它在 Maven 依赖项列表中。我将它部署到 JBoss 5.0,但我不知道它使用的是哪个 Servlet 版本。我也不知道如何在 Eclipse 中升级到更高的 Servlet 版本。 :|我将研究 Servlet,但我想知道为什么在 JSP 中使用 Bean 不好。我只看到有人说不使用“useBean”,而是使用导入。
  • 我不做Maven,所以不能详细讲。您只需要确保 Maven 构建的 WAR 文件在正确的位置包含正确的类文件。那必须解决您遇到的特定错误。 JBoss 5.0 是一个 Servlet 2.5 容器。至于使用豆类; EJB 当然不“只是”一个 bean。它是一个业务服务 bean。最后但同样重要的是,在 JSP 中必须避免使用 both jsp:useBean@page import
  • 看来我必须使用 MVC .. emm,忘记了这个词。所以我最终会得到类似 Bean > Servlet > Jsp 的东西?这意味着 Beans 实际上并没有在 JSP 中使用,而是在 Servlet 中使用?我只是很难理解豆子有什么用。我读了一些关于它们的文章,但我不明白它们的用途/用途。
  • 普通javabeans代表数据模型。企业 javabean 代表业务模型。另请参阅stackoverflow.com/questions/1727603/…stackoverflow.com/questions/3177733/…stackoverflow.com/tags/servlets/info
  • 谢谢,这是一些很好的信息。去那我将不得不改变一些事情。 :) 现在只需要弄清楚构建问题.. :|
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
相关资源
最近更新 更多