在这节中,我们将演示如何手动来创建一个简单的Servlet应用程序。需要遵循以下步骤,这些步骤对于所有Web服务器是常见的。在这个示例中,使用的是Apache Tomcat8服务器。Apache Tomcat是用于测试servlet和JSP技术的开源Web服务器。
这一节非常关键,希望您能仔细按照步骤说明来操作。能否手动开发一个Servlet运行成功,可能会影响到学习的热情。
在开始之前,需要安装两个软件:
- Java/JDK 8
- Tomcat 8
注意: Java安装好后,需要将它加到系统的环境变量中。可参考:http://www.yiibai.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后,请按照以下步骤操作:
- 创建应用程序目录结构。
- 创建一个Servlet
- 编译Servlet
- 创建应用程序部署描述符
- 启动服务器并部署应用程序
下面详细介绍所有这五个步骤,首先创建第一个Servlet应用程序。
1.创建应用程序目录结构
Sun Microsystem定义了创建servlet应用程序必须遵循的目录结构。这里以一个名称为:First 的应用为示例,介绍一个典型servlet应用程序的目录结构 -
在Apache-Tomcat\webapps目录下创建上述目录结构。所有HTML,静态文件(图像,css等)都直接保存在Web应用程序(webapps)文件夹下。 而所有Servlet类都保存在classes
文件夹中。
web.xml
(部署描述符)文件保存在WEB-INF文件夹下。
2.创建一个Servlet
创建servlet
有三种不同的方法。
- 通过实现
Servlet
接口 - 扩展
GenericServlet
类 - 通过扩展
HttpServlet
类
但是大部分servlet
是通过扩展HttpServlet
抽象类创建的。如前所述HttpServlet
给出了Servlet
接口的service()
方法的定义。我们将创建Servlet
类但不需要覆盖service()
方法。Servlet
类将仅覆盖doGet()
或doPost()
方法。
当servlet
的请求进入时,Web容器首先将调用servlet
的service()
方法,并根据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应用程序就成功运行了。