Servlet - 打包



包含 WEB-INF 子目录的 Web 应用程序结构是所有 Java Web 应用程序的标准,并由 Servlet API 规范指定。给定一个顶级目录名称 myapp。以下是此目录结构的样子:

/myapp
   /images
   /WEB-INF
      /classes
      /lib

WEB-INF 子目录包含应用程序的部署描述符,名为 web.xml。所有 HTML 文件都应保存在顶级目录中,即 myapp。对于管理员用户,您会发现 ROOT 目录作为父目录。

在包中创建 Servlet

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("<h1>" + message + "</h1>");
   }

   public void destroy() {
      // do nothing.
   }
}

编译包中的 Servlet

编译包中可用的类没有什么不同。最简单的方法是将您的 java 文件保存在完全限定的路径中,如上所述,该类将保存在 com.myorg 中。您还需要将此目录添加到 CLASSPATH。

假设您的环境已正确设置,请进入 **<Tomcat安装目录>** /webapps/ROOT/WEB-INF/classes 目录,并按如下方式编译 MyServlet.java

$ javac MyServlet.java

如果 servlet 依赖于任何其他库,您还必须在 CLASSPATH 中包含这些 JAR 文件。我只包含了 servlet-api.jar JAR 文件,因为我在 Hello World 程序中没有使用任何其他库。

此命令行使用 Sun Microsystems Java 软件开发工具包 (JDK) 附带的内置 javac 编译器。为了使此命令正常工作,您必须在 PATH 环境变量中包含您正在使用的 Java SDK 的位置。

如果一切顺利,上面的编译将在同一目录中生成 **MyServlet.class** 文件。下一节将解释如何在生产环境中部署已编译的 servlet。

打包的 Servlet 部署

默认情况下,servlet 应用程序位于路径 <Tomcat安装目录>/webapps/ROOT,类文件位于 <Tomcat安装目录>/webapps/ROOT/WEB-INF/classes。

如果您具有完全限定的类名 **com.myorg.MyServlet**,则此 servlet 类必须位于 WEB-INF/classes/com/myorg/MyServlet.class 中,并且您需要在位于 <Tomcat安装目录>/webapps/ROOT/WEB-INF/ 中的 **web.xml** 文件中创建以下条目:

<servlet>
   <servlet-name>MyServlet</servlet-name>
   <servlet-class>com.myorg.MyServlet</servlet-class>
</servlet>
 
<servlet-mapping>
   <servlet-name>MyServlet</servlet-name>
   <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

以上条目需要在 web.xml 文件中已有的 <web-app>…</web-app> 标签内创建。此表中可能已经存在各种条目,但没关系。

您几乎完成了,现在让我们使用 <Tomcat安装目录>\bin\startup.bat(在 Windows 上)或 <Tomcat安装目录>/bin/startup.sh(在 Linux/Solaris 等上)启动 Tomcat 服务器,最后在浏览器的地址栏中输入 **https://127.0.0.1:8080/MyServlet**。如果一切顺利,您将得到以下结果:

Hello World

广告