我有一个JSP文件(/page.jsp)在我的应用程序目录的根目录下。我想使用位于/WEB-INF/classes/Helper.class的这个类。
我尝试使用JSP页面导入语句来引用类名,但是没有成功。我该如何引用Helper.class以便在我的JSP中使用它?我不想将这个类包含在一个包/ JAR中。
好的,我在查阅资料后发现JSP规范 (JSP.11.2 JSP页面实现类)对你很有帮助。你需要将该类从默认包中移动。
从JSP 2.0开始,引用未命名(也称为默认)包中的任何类都是非法的。这可能会导致某些容器(特别是在JDK 1.4或更高版本环境中运行的容器)出现翻译错误。很不幸,但不可避免的是,这将破坏一些旧的JSP应用程序的兼容性。然而,从JDK 1.4开始,从未命名包中导入类是无效的(有关详细信息,请参见http://java.sun.com/j2se/1.4/compatibility.html#source)。因此,为了向前兼容,应用程序不能依赖未命名包。这个限制也适用于所有其他引用类的情况,比如在TLD中指定标签的类名时。/WEB-INF/classes
目录下,那么它使用默认包,这通常是不推荐的。由于这个原因,你不需要导入它;你可以直接在你的JSP中使用它:directly。<%
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
%>
Helper.getDBConnection()
和默认包 - 我认为回答他的问题比尝试建议他使用Spring MVC或其他框架更有帮助 :-) - ChssPly76它必须在你的WAR的CLASSPATH中 - 可以是WEB-INF下的包或WEB-INF/lib下的JAR。这只是基本的Java。
对象必须在请求、页面、会话或应用程序范围内。这通常意味着一个servlet将其放在那里。你必须有一个servlet和JSP协作才能做到这一点。
你可以编写脚本代码,但我认为最好使用JSTL。无脚本的JSP在长期来看是个好主意。
<%@ page import="com.*" %>
。<jsp:useBean id="now" class="java.util.Date"/>
以上代码创建了一个Date实例并将其作为请求属性映射键now
添加。 它随后可供使用,就像任何其他请求属性变量一样,例如,${now.time}
在el表达式中将打印以毫秒为单位的时间。<jsp:useBean id="Helper" class="com.your.company.name.Helper"/>
。 确保Helper具有无参公共构造函数。