如何从JSP页面引用java .class文件?

时间:2009-10-03 21:58:02

标签: java jsp

我在app目录的根目录中有JSP文件(/page.jsp)。我想使用位于/WEB-INF/classes/Helper.class中的这个类。

我尝试使用带有类名的JSP页面导入语句,但这不起作用。如何引用Helper.class以便我可以使用它的JSP?我不想将这个类包含在一个包/ JAR中。

5 个答案:

答案 0 :(得分:6)

好吧,直到我查了一下,我才知道这一点。 JSP Spec (JSP.11.2 JSP Page Implementation Class)是你的朋友。您需要从默认包中移动该类。

  

从JSP 2.0开始,引用是非法的   来自未命名的任何类   (a.k.a. default)包。这可能   导致某些翻译错误   容器,特别是那些容器   以JDK 1.4或更高版本运行   环境。不幸的是,但是   不可避免的,这会破裂   与一些旧的JSP兼容   应用。但是,从JDK 1.4开始,   从未命名的类导入类   包无效(见   http://java.sun.com/j2se/1.4/compatibility.html#source   详情)。因此,对于前锋   兼容性,应用程序不得   依赖于未命名的包。这个   限制也适用于所有其他   引用类的情况,   例如在指定类名时   对于TLD中的标签

答案 1 :(得分:2)

如果您的课程位于/WEB-INF/classes直接,则表示它使用的默认包通常不建议使用。你不需要导入它;您可以直接在JSP中使用它:

<%
 Helper helper = new Helper(); // use appropriate constructor
 %>

更好的解决方案是将其作为包的一部分。您需要将其放入/WEB-INF/classes的相应子文件夹中,然后说/WEB-INF/classes/com/mypackage/Helper.class。您将使用完全限定名称或将其导入JSP:

<%
 com.mypackage.Helper helper = new com.mypackage.Helper(); // use appropriate constructor
 %>

答案 2 :(得分:0)

它必须位于WAR的CLASSPATH中 - WEB-INF下的包或WEB-INF / lib下的JAR。那只是基本的Java。

对象必须位于请求,页面,会话或应用程序范围内。这通常意味着servlet将它放在那里。你必须有一个servlet和JSP合作来完成它。

您可以编写scriptlet代码,但我认为使用JSTL要好得多。从长远来看,无Scriptlet的JSP是一个好主意。

答案 3 :(得分:0)

以下内容必须有效<%@ page import="com.*" %>

检查您正在使用的J2EE容器的文档。如果您使用的是J2EE Sun认证容器,则不应该遇到页面导入指令的问题。

JSP Directives

答案 4 :(得分:0)

尝试这样的事情:<jsp:useBean id="now" class="java.util.Date"/>

以上创建了Date实例,并将其添加为请求属性映射键now。 然后可以使用它,就像任何其他请求属性变量一样,例如,${now.time}之类的el表达式将以毫秒为单位打印时间。

因此,在您的方案中,您需要<jsp:useBean id="Helper" class="com.your.company.name.Helper"/>。确保Helper没有arg公共构造函数。

此处的额外信息http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html