Servlets 简明教程
Servlets - Packaging
涉及 WEB-INF 子目录的 Web 应用程序结构对于所有 Java Web 应用程序都是标准的,并由 servlet API 规范指定。给定顶层目录名称为 myapp。这个目录结构看起来像这样 -
/myapp
/images
/WEB-INF
/classes
/lib
WEB-INF 子目录包含应用程序的部署描述符,名为 web.xml。所有 HTML 文件都应保存在顶层目录(即 myapp)中。对于管理员用户,您会发现 ROOT 目录作为父目录。
Creating Servlets in Packages
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.
}
}
Compiling Servlets in Packages
编译包中提供的类并没有什么不同。最简单的办法是将您的 Java 文件保存在完全限定的路径中,如上所述,该类将保存在 com.myorg 中。还需要将此目录添加到 CLASSPATH 中。
假设您的环境已正确设置,请转到 <Tomcat-installationdirectory> /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 部署到生产中。
Packaged Servlet Deployment
默认情况下,servlet 应用程序位于路径 <Tomcat-installationdirectory>/webapps/ROOT 中,类文件将驻留在 <Tomcat-installationdirectory>/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-app>…</web-app> web.xml 文件内。此表格中可能已经存在各种条目,但不必担心。
您几乎完成了,现在让我们使用 <Tomcat-installationdirectory>\bin\startup.bat (在 Windows 中) 或 <Tomcat-installationdirectory>/bin/startup.sh (在 Linux/Solaris 等中) 启动 Tomcat 服务器,最后在浏览器的地址栏中键入 http://localhost:8080/MyServlet 。如果一切顺利,您将获得以下结果 −
Hello World