有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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

共 (2) 个答案

  1. # 1 楼答案

    我已经找到了它不起作用的原因,它与WEB-INF目录有关。它需要根据包裹的名称进行布局,这样才能适合我的情况

    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
        }
    
    }
    

    包名为myclass,因此它需要位于名为myclass的目录中

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

    如果包名有额外的停止,那么WEB-INF将需要额外的子目录

    package com.myclass;
    /approot/WEB-INF/classes/com/myclass/c_myclass.java
    /approot/WEB-INF/classes/com/myclass/c_myclass.class
    
  2. # 2 楼答案

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

    首先,必须将java文件编译成一个类文件——字节码,由java虚拟机解释


    顺便说一句,在JSP文件中不能使用像publicstatic这样的关键字。JSP不是一个类定义,而是由servlet引擎在运行时解释的源代码。在JSP块中编写的所有内容实际上都在方法上下文中


    在其他方面,也许你应该考虑查看java Web MVC的指导/教程。你的设置很糟糕