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 类的示例>
// 命名您的包
package com.myorg;
// 导入所需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet extends HttpServlet {
private String message;
public void init() throws ServletException {
// 进行必要的初始化
message = "Hello World";
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html");
// 实际逻辑在这里。
PrintWriter out = response.getWriter();
out.println("<h1>" + message + "</h1>");
}
public void destroy() {
// do nothing.
}
}
在包中编译 Servlet
编译包中的类没有什么不同。最简单的方法是将您的 java 文件保存在完全限定路径中,如上所述,类将保存在 com.myorg 中。您还需要在 CLASSPATH 中添加此目录。
假设您的环境已正确设置,请进入 <Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes 目录并按如下方式编译 MyServlet.java
$ javac MyServlet.java
如果 servlet 依赖于任何其他库,您还必须将这些 JAR 文件包含在您的 CLASSPATH 中。我只包含了 servlet-api.jar JAR 文件,因为我在 Hello World 程序中没有使用任何其他库。
此命令行使用 Sun Microsystems Java 软件开发工具包 (JDK) 附带的内置 javac 编译器。要使此命令正常工作,您必须在 PATH 环境变量中包含您正在使用的 Java SDK 的位置。
如果一切顺利,上述编译将在同一目录中生成 MyServlet.class 文件。下一节将解释如何在生产中部署已编译的 servlet。
打包的 Servlet 部署
默认情况下,servlet 应用程序位于路径 <Tomcat-installationdirectory>/webapps/ROOT,类文件将位于 <Tomcat-installationdirectory>/webapps/ROOT/WEB-INF/classes。
如果您有一个完全限定的类名 com.myorg.MyServlet,那么这个 servlet 类必须位于 WEB-INF/classes/com/myorg/MyServlet.class,并且您需要在位于 <Tomcat-installationdirectory>/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-installationdirectory>\bin\startup.bat(在 Windows 上)或 <Tomcat-installationdirectory>/bin/startup.sh(在 Linux/Solaris 等上)启动 tomcat 服务器,最后在浏览器的地址框中输入 http://localhost:8080/MyServlet。如果一切顺利,您将获得以下结果−
Hello World

