使用WEBINF自定义类的java JSP
当我试图在jspweb应用程序(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
}
}
我有我的索引。jsp位于我的应用程序目录的根目录中
/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
# 1 楼答案
我已经找到了它不起作用的原因,它与WEB-INF目录有关。它需要根据包裹的名称进行布局,这样才能适合我的情况
包名为myclass,因此它需要位于名为myclass的目录中
如果包名有额外的停止,那么WEB-INF将需要额外的子目录
# 2 楼答案
如果将Java源代码文件粘贴到WEB-INF目录中,它将无法工作,因为源代码实际上没有在您的计算机上运行
首先,必须将java文件编译成一个类文件——字节码,由java虚拟机解释
顺便说一句,在JSP文件中不能使用像
public
或static
这样的关键字。JSP不是一个类定义,而是由servlet引擎在运行时解释的源代码。在JSP块中编写的所有内容实际上都在方法上下文中在其他方面,也许你应该考虑查看java Web MVC的指导/教程。你的设置很糟糕