- Servlet 教程
- Servlet - 主页
- Servlet - 概述
- Servlet - 环境设置
- Servlet - 生命周期
- Servlet - 示例
- Servlet - 表单数据
- Servlet - 客户端请求
- Servlet - 服务器响应
- Servlet - Http 代码
- Servlet - 编写过滤器
- Servlet - 例外
- Servlet - Cookie 处理
- Servlet - 会话跟踪
- Servlet - 数据库访问
- Servlet - 文件上传
- Servlet - 处理日期
- Servlet - 页面重定向
- Servlet - 点击计数器
- Servlet - 自动刷新
- Servlet - 发送电子邮件
- Servlet - 包装
- Servlet - 调试
- Servlet - 国际化
- Servlet - 注释
- Servlet 有用资源
- Servlet - 问题与解答
- Servlet - 快速指南
- Servlet - 有用的资源
- Servlet - 讨论
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-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 中,并且您需要在位于以下位置的web.xml文件中创建以下条目:在 <Tomcat 安装目录>/webapps/ROOT/WEB-INF/
<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