Servlet 3.1 包

涉及到 WEB-INF 子目录的 Web 应用程序结构是所有的 Java web 应用程序的标准,并由 Servlet API 规范指定

给定一个顶级目录名 servlet,目录结构如下所示:

/servlet
    /images
    /WEB-INF
        /classes
        /lib
        /web.xml

WEB-INF 子目录中包含应用程序的部署描述符,名为 web.xml

所有的 HTML 文件都位于顶级目录 servlet

创建包中的 Servlet

WEB-INF/classes 目录包含了所有的 Servlet 类和其他类文件

类文件所在的目录结构与它们的包名称匹配

一个完全合格的类名称 cn.twle.demo.HelloServlet ,那么这个 Servlet 类必须位于以下目录中

servlet/WEB-INF/classes/cn/twle/demo/HelloServlet.class

下面的例子创建包名为 cn.twle.demo 的 HelloServlet 类

package cn.twle.demo;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "HelloServlet", urlPatterns = {"hello"}, loadOnStartup = 1) 
public class HelloServlet extends HttpServlet 
{
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        response.getWriter().print("Hello, World!");  
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        String name = request.getParameter("name");
        if (name == null) name = "World";
        request.setAttribute("user", name);
        request.getRequestDispatcher("response.jsp").forward(request, response); 
    }
}

编译包中的 Servlet

编译包中的类与编译其他的类没有什么大的不同

最简单的方法是让我们的 java 文件保留完全限定路径,如上面提到的类,将被保留在 cn.twle.demo 中

然后在 CLASSPATH 中添加该目录

如果我们的环境已正确设置,进入 <Tomcat-installation-directory>/webapps/servlet/WEB-INF/classes 目录,并编译 HelloServlet.java

$ javac HelloServlet.java

如果 Servlet 依赖于其他库,那么必须在 CLASSPATH 中也要引用那些 JAR 文件

这里我只引用了 servlet-api.jar JAR 文件,因为我在 Hello World 程序中并没有使用任何其它类库

该命令行使用内置的 javac 编译器,它是 Java 软件开发工具包(JDK,全称 Java Software Development Kit)附带的

如果一切顺利,上述编译会在同一目录下生成 HelloServlet.class 文件

下一节我们将学习如何把一个已编译的 Servlet 部署到生产中

Servlet 打包部署

默认情况下,Servlet 应用程序位于路径 <Tomcat-installation-directory>/webapps/servlet 下,且类文件放在 <Tomcat-installation-directory>/webapps/servlet/WEB-INF/classes

如果你有一个完全合格的类名称 cn.twle.demo.HelloServlet ,那么这个 Servlet 类必须位于 WEB-INF/classes/cn/twle/demo/HelloServlet.class 中

我们需要在位于 <Tomcat-installation-directory>/webapps/servlet/WEB-INF/ 的 web.xml 文件中创建以下条目

<servlet>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>cn.twle.demo.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>HelloServlet</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

上面的条目要被创建在 web.xml 文件中的 <web-app>...</web-app> 标签内

在该文件中可能已经有各种可用的条目,但不要在意

到这里,你基本上已经完成了,现在让我们使用

<Tomcat-installation-directory>\bin\startup.bat(在 Windows 上)或 <Tomcat-installation-directory>/bin/startup.sh(在 Linux)启动 tomcat 服务器

在浏览器的地址栏中输入 http://localhost:8080/servlet/hello_world

如果一切顺利,会显示如下

Servlet 第一个程序

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.