📅  最后修改于: 2020-11-12 05:45:47             🧑  作者: Mango
涉及WEB-INF子目录的Web应用程序结构是所有Java Web应用程序的标准,并由Servlet API规范指定。给定myapp的顶级目录名称。这是这个目录结构的样子-
/myapp
/images
/WEB-INF
/classes
/lib
WEB-INF子目录包含名为web.xml的应用程序的部署描述符。所有HTML文件都应保存在顶层目录myapp中。对于管理员用户,您将找到ROOT目录作为父目录。
WEB-INF / classes目录包含所有servlet类和其他类文件,其结构与它们的包名相匹配。例如,如果您具有com.myorg.MyServlet的完全限定的类名,则此Servlet类必须位于以下目录中-
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
以下是使用包名称com.myorg创建MyServlet类的示例
// Name your package
package com.myorg;
// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
private String message;
public void init() throws ServletException {
// Do required initialization
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
// Actual logic goes here.
PrintWriter out = response.getWriter();
out.println("" + message + "
");
}
public void destroy() {
// do nothing.
}
}
编译包中可用的类没有什么不同。最简单的方法是将Java文件保存在完全限定的路径中,如上所述,此类将保存在com.myorg中。您还需要在CLASSPATH中添加此目录。
假设您的环境已正确设置,请进入
$ javac MyServlet.java
如果servlet依赖于任何其他库,则还必须在CLASSPATH上包括那些JAR文件。我仅包含servlet-api.jar JAR文件,因为我没有在Hello World程序中使用任何其他库。
该命令行使用Sun Microsystems Java软件开发套件(JDK)随附的内置javac编译器。为了使此命令正常工作,您必须在PATH环境变量中包括所使用的Java SDK的位置。
如果一切顺利,上述编译将在同一目录中生成MyServlet.class文件。下一节将解释如何在生产中部署已编译的servlet。
默认情况下,一个servlet应用程序位于路径
如果您具有com.myorg.MyServlet的完全合格的类名称,则此Servlet类必须位于WEB-INF / classes / com / myorg / MyServlet.class中,并且需要在位于以下位置的web.xml文件中创建以下条目:在
MyServlet
com.myorg.MyServlet
MyServlet
/MyServlet
以上要在web.xml文件中的
差不多完成了,现在让我们使用
Hello World