JSP使用WEB-INF中的自定义类

时间:2017-09-20 11:50:45

标签: java class jsp import

我在尝试在JSP Web应用程序(tomcat)中使用我的一个Java类时遇到了一些问题。

我让我的班级坐在WEB-INF目录(也编译)

/approot/WEB-INF/classes/c_myclass.java
/approot/WEB-INF/classes/c_myclass.class

package myclass;

public class c_myclass {

    // class variable
    String classvar;

    // constructor
    public c_myclass(String arg) {
        // do stuff
    }

    // class function
    public void classfunc(String arg) {
        // do stuff
    }

}

我的index.jsp位于我的app目录的根目录

/approot/index.jsp

// these seems to work
<%@ page import = "java.io.*" %>
<%@ page import = "myclass.*" %>

<!DOCTYPE html>
<html>

<head>
    <title>Nothing</title>
</head>

<body>
<%!
    // global var for testing
    // this fails
    public static c_myclass myClass;
%>
</body>

</html>

我在常规Java中做了一些非常相似的事情但是它有效但在这里我收到错误并且不确定为什么

c_appclasses cannot be resolved to a type

2 个答案:

答案 0 :(得分:0)

如果您将Java源代码文件粘贴到WEB-INF目录中,它将无法正常工作,因为源代码实际上并未在您的计算机上运行。

首先,您必须将java文件编译为类文件 - 由java虚拟机解释的字节码。

AFAIK,您不能在JSP文件中使用像publicstatic这样的关键字。 JSP不是类定义,而只是servlet引擎在运行时解释的源代码。你在这样的JSP块中编写的所有东西实际上都是在方法上下文中。

换句话说,也许您应该考虑查看Java WEB MVC的指南/教程。你的设置很糟糕。

答案 1 :(得分:0)

我发现它不起作用的原因,它与WEB-INF目录有关。根据包装的名称,它需要根据我的情况进行布局。

package myclass;
/approot/WEB-INF/classes/myclass/c_myclass.java
/approot/WEB-INF/classes/myclass/c_myclass.class

包名是myclass,因此它需要位于名为myclass

的目录中
package com.myclass;
/approot/WEB-INF/classes/com/myclass/c_myclass.java
/approot/WEB-INF/classes/com/myclass/c_myclass.class

如果包名称有其他停靠点,则WEB-INF将需要其他子目录。

 button "Click" [
    repeat i (length? varlist)   [
        tmp: get fldlist/:i
        tmp/text:  form get varlist/:i
    ]  
]