在這節(jié)中,我們將演示如何手動(dòng)來創(chuàng)建一個(gè)簡單的Servlet應(yīng)用程序。需要遵循以下步驟,這些步驟對于所有Web服務(wù)器是常見的。在這個(gè)示例中,使用的是Apache Tomcat8服務(wù)器。Apache Tomcat是用于測試servlet和JSP技術(shù)的開源Web服務(wù)器。
這一節(jié)非常關(guān)鍵,希望您能仔細(xì)按照步驟說明來操作。能否手動(dòng)開發(fā)一個(gè)Servlet運(yùn)行成功,可能會影響到學(xué)習(xí)的熱情。
在開始之前,需要安裝兩個(gè)軟件:
注意: Java安裝好后,需要將它加到系統(tǒng)的環(huán)境變量中。可參考:http://www.yiibai.com/java/java_environment_setup.html
安裝Tomcat
在開始編寫代碼之前,需要您自己下載最新版本的Tomcat Server并將其安裝在您的計(jì)算機(jī)上。
打開網(wǎng)址: http://tomcat.apache.org/download-80.cgi 下載 apache-tomcat-8.5.23-windows-x64.zip ,如下圖所示 -

下載完成后,將它解壓到一個(gè)合適的位置,如:D:\software\apache-tomcat-8.5.23 , 然后運(yùn)行Tomcat服務(wù)器測試運(yùn)行情況,可通過雙擊文件:D:\software\apache-tomcat-8.5.23\bin\startup.bat 來啟動(dòng),如下所示 -

測試運(yùn)行Tomcat服務(wù)器運(yùn)行情況,打開瀏覽器,訪問地址:http://localhost:8080 應(yīng)該會看到類似的界面 -

在機(jī)器上安裝Tomcat Server后,請按照以下步驟操作:
下面詳細(xì)介紹所有這五個(gè)步驟,首先創(chuàng)建第一個(gè)Servlet應(yīng)用程序。
Sun Microsystem定義了創(chuàng)建servlet應(yīng)用程序必須遵循的目錄結(jié)構(gòu)。這里以一個(gè)名稱為:First 的應(yīng)用為示例,介紹一個(gè)典型servlet應(yīng)用程序的目錄結(jié)構(gòu) -

在Apache-Tomcat\webapps目錄下創(chuàng)建上述目錄結(jié)構(gòu)。所有HTML,靜態(tài)文件(圖像,css等)都直接保存在Web應(yīng)用程序(webapps)文件夾下。 而所有Servlet類都保存在classes文件夾中。
web.xml(部署描述符)文件保存在WEB-INF文件夾下。
創(chuàng)建servlet有三種不同的方法。
Servlet接口GenericServlet類HttpServlet類但是大部分servlet是通過擴(kuò)展HttpServlet抽象類創(chuàng)建的。如前所述HttpServlet給出了Servlet接口的service()方法的定義。我們將創(chuàng)建Servlet類但不需要覆蓋service()方法。Servlet類將僅覆蓋doGet()或doPost()方法。
當(dāng)servlet的請求進(jìn)入時(shí),Web容器首先將調(diào)用servlet的service()方法,并根據(jù)service()方法的請求類型來調(diào)用doGet()或doPost()方法)。
注意:默認(rèn)情況下,請求是
Get請求。
創(chuàng)建一個(gè)類:MyServlet.java,并將這個(gè)類文件放在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目錄中創(chuàng)建。
要編譯Servlet,需要一個(gè)JAR文件。不同的服務(wù)器需要不同的JAR文件。在Apache Tomcat服務(wù)器需要的是servlet-api.jar文件來編譯servlet類。
編譯Servlet的步驟如下 -
java -version,如已添加,則應(yīng)該返回類似的結(jié)果 -
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文件粘貼到一個(gè)目錄,如:F:\worksp\servlet\library目錄下,用于編譯Servlet類。MyServlet類,如下所示 - F:\worksp\servlet\First> javac -Djava.ext.dirs=F:\worksp\servlet\library MyServlet.java
如果編譯沒有問題,那么將會在當(dāng)前目錄下生成一個(gè)類文件:MyServlet.class ,然后將類文件MyServlet.class粘貼到F:\worksp\servlet\First\WEB-INF\classes目錄中。
部署描述符(DD)是由Web容器用于運(yùn)行Servlet和JSP頁面的XML文檔。部署描述符用于完成幾個(gè)重要的工作,如:
稍后將詳細(xì)討論所有這些?,F(xiàn)在來看看我們?yōu)檫@個(gè)Web應(yīng)用程序創(chuàng)建一個(gè)簡單的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>
<!--// 默認(rèn)主頁-->
<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><!--// 請求此類的對應(yīng)URL -->
</servlet-mapping>
</web-app>
web.xml文件元素的說明
web.xml文件中的元素太多。以下是上述web.xml文件中使用的一些元素的說明 -
<web-app>表示整個(gè)應(yīng)用程序。<servlet>是<web-app>的子元素,代表servlet。<servlet-name>是<servlet>的子元素,表示servlet的名稱。<servlet-class>是<servlet>的子元素,表示servlet的類。<servlet-mapping>是<web-app>的子元素。它用于映射servlet。<url-pattern>是<servlet-mapping>的子元素??蛻舳耸褂么四J絹碚{(diào)用servlet。將目錄F:\worksp\servlet\First 拷貝到 D:\software\apache-tomcat-8.5.23\webapps 下部署這個(gè)應(yīng)用程序。
雙擊startup.bat文件啟動(dòng)Apache Tomcat服務(wù)器。
或者,在Windows機(jī)器上在命令行提示執(zhí)行以下命令。
D:\software\apache-tomcat-8.5.23\bin> startup.bat
運(yùn)行Servlet應(yīng)用程序,打開瀏覽器輸入并訪問網(wǎng)址:http:localhost:8080/First/hello ,應(yīng)該會看到類似的結(jié)果 -

這樣,我們的第一個(gè)Servlet應(yīng)用程序就成功運(yùn)行了。