天天看點

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

新手上路:Tomcat5.5.9的安裝配置

作為一個初學JSP和Servlet的人來說,最難恐怕是伺服器的配置這一關。本人剛剛開始學習JSP和Servlet,現在把配置經過和大家交流.

  

  我的主要環境如下

  1 - Windows XP sp2

  2 - j2sdk 1.5 和 jre1.5

  3 - tomcat 5.5.9

  

  大緻的步驟如下:

  1. 安裝和配置java.

  2. 下載下傳并安裝伺服器。

  3. 測試伺服器。

1 - 安裝和配置java。

  

  1.1 下載下傳J2SDK和JRE. 可以在http://java.sun.com下載下傳. 注意Tomcat5.5.9需要的是JRE1.5.

  1.2 安裝并設定環境變量. 設定JAVA_HOME變量為java的主目錄. 把java的bin目錄路徑添加到PATH環境變量中.

  1.3 測試Java環境. 進入 指令提示符(開始 - 運作 - cmd),輸入java -version,看版本對不對. 輸入 javac -help看是不是正确的提示,如果提示"不是内部活外部指令,也不是可運作的程式或批處理檔案",則沒有把Path路徑設定好.參看1.2

  一切OK,進入第二步.

  

2 - 下載下傳并安裝伺服器。

  

  2.1 下載下傳tomcat5.5.9. 下載下傳位址http://jakarta.apache.org/site/downloads/downloads_tomcat-5.cgi. 下載下傳 5.5.9.exe (是windows 安裝檔案,我覺得比解壓縮檔案好配置的多)。

  2.2 安裝。 輕按兩下下載下傳的 jakarta-tomcat-5.5.9.exe檔案(4.29M),可進入安裝狀态。安裝的過程就像安裝windows的其它軟體一樣簡單,選路徑,下一步直到完成。其中要注意的是端口号,在安裝過程中會提示你修改端口号,如果你沒有别的伺服器,建議你把端口号修改為80,這樣友善你以後調試程式。如果你已經有别的伺服器占據了80或者你不怕以後調試時不厭其煩的在位址欄輸入8080,那就保持8080。

  2.3 開啟servlet調試器。主要是為了在不修改web.xml檔案的情況下也能運新servlet,随着學習的深入,你會體會到這樣帶來的便利性,但不建議企業伺服器這麼做,僅限于學習階段。具體做法如下,在tomcat的根目錄下,比如我的安轉目錄是D:/Apache Software Foundation/Tomcat 5.5找到conf檔案夾下的web.xml檔案.把其中如下的servlet和servlet-mapping元素注釋去掉:

(j00152685:apache-tomcat-5.5.28中的web.xml中,已經注釋了這一部分)

  

  <servlet>

  <servlet-name>invoker</servlet-name>

  <servlet-class>

  org.apache.catalina.servlets.InvokerServlet

  </servlet-class>

  ...

  </servlet>

  ...

  <servlet-mapping>

  <servlet-name>invoker</servlet-name>

  <url-pattern>/servlet/*</url-pattern>

  </servlet-mapping>

  一切OK,進入第三步.

  

3 - 測試伺服器.

  

  3.1 測試伺服器的基本配置. 開始 - 程式 - Apache Tomcat 5.5 - Monitor Tomcat - Start 來啟動伺服器. 在浏覽器位址欄輸入http://localhost:port/(注意:port[x1] 是你設定的端口好)看能否正确顯示Tomcat伺服器說明頁面.如不行,請檢查以上配置.

  3.2 測試html檔案. hello.html寫好,拷貝至 tomcat主目錄/webapps/ROOT/ 下.在浏覽器位址欄輸入http://localhost:port/hello.html(注意檔案名的大小寫).

  3.3 測試JSP檔案. hello.jsp寫好,拷貝至 tomcat主目錄/webapps/ROOT/ 下.在浏覽器位址欄輸入http://localhost:port/hello.jsp(注意檔案名的大小寫).

  3.4 測試servlet. 寫好HelloServlet.java并編譯.把HelloServlet.class拷貝至 tomcat主目錄/webapps/ROOT/WEB-INF/classes(一般需要自己建一個classes檔案夾)下,在浏覽器位址欄輸入http://localhost:port/servlet/HelloServlet (這裡可以看到開啟servlet調試器的便利之處).

出處:http://java.chinaitlab.com/Tomcat/31364.html

用 Tomcat 和 Eclipse 開發 Web 應用程式

1. 建立項目

啟動eclipse,然後選擇菜單File->New->Project...,在建立項目向導中選擇 Web->Dynamic Web Project。該項目即為使用Servlet、JSP等技術開發動态網站的項目。(如果你找不到這一項,說明Lomboz沒有配置好,請參閱文章開頭的連結進行配置。)

(j00152685:Lomboz是什麼東東?)

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

下一步,輸入項目名 LearnJSP。下面的Target Runtime指定運作這個項目的伺服器,如果你已經在配置Lomboz 的一節中配置好了Tomcat伺服器,那麼在這裡你可以看到相應的伺服器配置,選擇它即可。如果選擇框中隻有<none>,說明你還沒有配置伺服器,可以單擊右側的New...按鈕建立。

Configurations項選擇<none>即可。

(jt00152685:我的項目名為HelloServlet1,之前建了一個HelloServlet的java project,失敗了)

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

下一步選擇項目所需的特性,預設的Dynamic Web Module和Java就足夠了。

(j00152685:我的eclipse中,上一步和這一步是在一起的。另外,Dynamic Web Module是指什麼?)

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

下一步是輸入相關的目錄,這裡也直接使用預設值即可。圖略。

最後單擊 Finish,完成項目建立。建立途中可能會有一個使用者使用協定需要你同意,單擊I Agree即可。建立完成後會詢問是否要切換到J2EE視圖(下圖),選擇Yes,完成項目建立。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

項目建立完成後,請在左側的 Project Explorer 中打開 LearnJSP 項目,看看它各個部分的構成。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

從基礎知識一節中我們知道,應用程式由三部分組成,即Servlet、JSP及靜态内容、配置檔案web.xml。項目視圖中的 src 目錄用來儲存 Servlet 源代碼,WebContent 目錄用來儲存JSP及靜态内容, web.xml則位于 WebContent/WEB-INF/web.xml。但手工編輯 web.xml 比較麻煩,是以 Lomboz 提供了一套可視化工具用于編輯 web.xml,即最上方的Depolyment Descriptor。

2. 了解Servlet

在Project Explorer中打開Java Resources: src -> Libraries -> Apache Tomcat 5.5 -> servlet-api.jar 檔案,可以看到其中包含兩個包:javax.servlet和javax.servlet.http,與Servlet有關的類和接口都位于這兩個包裡面。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

Servlet是一個接口,位于 javax.servlet.Servlet,它規定了每個Servlet所必須實作的方法。實際應用時我們需要從 javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 兩個抽象類繼承出自己的Servlet類,并實作所需的功能。這幾個類的關系如下(綠色斜體字為抽象類):

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

上圖中,Servlet依賴于ServletRequest和ServletResponse接口,這兩個接口負責為Servlet接受和發送資訊。 HttpServlet也類似。

Servlet接口

javax.servlet.Servlet接口包含以下的方法:

init()

void init(ServletConfig config) throws ServletException

init方法用于初始化,在Servlet啟動時調用。

service()

void service(ServletRequest req, ServiceResponse res) throws ServletException, IOException

Servlet通過這個方法,從req獲得用戶端請求,處理并生成結果,再通過res發送給用戶端。

destroy()

void destroy()

Servlet銷毀時執行的方法。

getServletInfo()

String getServletInfo()

将Servlet的資訊通過字元串傳回。

getServletConfig()

ServletConfig getServletConfig()

擷取包含Servlet各種資訊的ServletConfig對象。

當某個Servlet第一次被請求時,伺服器(Servlet容器)會生成該Servlet并調用它的init()方法,再調用其service()方法處理請求。處理結束後該Servlet會常駐于容器中,下一個請求則不再重新生成Servlet,而是直接調用常駐的Servlet對象的service()方法。伺服器停止時,會調用該Servlet的destroy()方法。

是以,在Servlet的一個生命周期中,init()和destroy()僅會被調用一次,而service()則會被調用多次。

GenericServlet抽象類

javax.servlet.GenericServlet為我們實作了Servlet接口的大部分方法,除了service()方法之外。是以,我們在制作自己的Servlet時,隻需要繼承GenericServlet并重載service()方法即可。

典型的Servlet示例

下面我們來做一個典型的Servlet。

在eclipse左側的Project Explorer中,右鍵單擊Java Resources: src目錄(以後簡稱src目錄),選擇New->Class,建立如下所示的類。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

包名輸入我們要建立的 com.idv2.learnjsp,類名為 HelloServlet,父類為 javax.servlet.http.GenericServlet。在輸入父類名時,你會看到輸入框左側有個小燈泡的圖示,這說明可以通過 Alt-/鍵自動補齊,是以你隻需輸入 GenericSer 幾個字母,然後按 Alt-/ 組合鍵,系統會自動查找開頭為 GenericSer 的類并補齊剩餘部分。

(j00152685:我的代碼直接放在default包中)

Finish之後eclipse會為我們生成代碼架構,我們隻需填入實際的處理代碼即可。代碼可以從這裡下載下傳。

helloservlet.zip

上述代碼是UTF-8編碼,如果你直接放到src目錄中有可能出現亂碼,這時請選擇Windows->Preferences...菜單,選擇左側的General->Workspace,然後将Text file encoding設定為UTF-8即可。

(j00152685:我用的源碼:

HelloServlet.java

import java.io.*;      
import javax.servlet.http.*;      
import javax.servlet.*;      
/**      
* Hello world servlet.  Most servlets will extend      
* javax.servlet.http.HttpServlet as this one does.      
*/      
public class HelloServlet extends HttpServlet {      
  /**      
   * Implements the HTTP GET method.  The GET method is the standard      
   * browser method.      
   *      
   * @param request the request object, containing data from the browser      
   * @param repsonse the response object to send data to the browser      
   */      
  public void doGet (HttpServletRequest request,      
                     HttpServletResponse response)      
    throws ServletException, IOException      
  {      
    // Returns a writer to write to the browser      
    PrintWriter out = response.getWriter();      
    // Writes the string to the browser.      
    out.println("Hello, world!");      
    out.close();      
  }      
}      

代碼寫好後,從Project Explorer中打開項目的 build 目錄,可以看到eclipse自動編譯了 HelloServlet.java并生成了 com/idv2/learnjsp/HelloServlet.class 檔案。

那麼如何在伺服器上運作它呢?首先必須要做的就是在配置檔案 web.xml 中登記這個Servlet。剛才我們在建立 HelloServlet 類時,并沒有聲明它是一個Servlet,這樣伺服器就無法将它作為Servlet執行,是以必須先登記,并為它指定一個URL(即Servlet Mapping)。

右鍵單擊Depolyment Descriptor中的Servlets,選擇New->Servlet,出現下面的畫面。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

因為我們已經寫好了HelloServlet類,是以選中Use existing Servlet class,然後單擊右側的Browse...按鈕,選擇HelloServlet類。下一步。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

URL映射是指,浏覽器通過哪個URL能通路到這個Servlet。預設與Servlet名稱相同,為了示範,我們這裡将他修改為小寫的 /helloservlet 。實際的URL格式為 http://主機名/應用程式名/Servlet的URL映射,我們這個Servlet的URL就應當是 http://localhost:8080/LearnJSP/helloservlet。

(j00152685:我的是http://localhost:80/HelloServlet1/helloservlet)

單擊Finish完成添加Servlet。如果你有興趣可以打開 WebContent/WEB-INF/web.xml,可以看到剛才的修改在web.xml中是怎樣的結果。

下一步我們需要将它部署到伺服器上。打開eclipse下方的Servet欄,可以看到系統中的伺服器清單。

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

如果你找不到Server欄,請通過主菜單Window->Show View->Others添加Server欄;如果你的Server欄中什麼都沒有,請在Server欄中單擊右鍵然後 New->Server。

右鍵單擊伺服器,選擇Add and Remove Projects...,将 LearnJSP(j00152685:HelloServlet1)項目添加到伺服器上。添加之後的結果如下:

第一個Servlet程式新手上路:Tomcat5.5.9的安裝配置用 Tomcat 和 Eclipse 開發 Web 應用程式

最後右鍵單擊伺服器,選擇Start,片刻即可看到在Console欄中輸出大量的資訊,伺服器啟動了。打開浏覽器,通路 http://localhost:8080/LearnJSP/helloservlet。如果能看到“Hello Servlet”的輸出,則恭喜你,第一個Servlet成功運作了!

(j00152685:我的是http://localhost:80/HelloServlet1/helloservlet)

重新整理浏覽器頁面幾次,然後回到eclipse下側的Console欄,可以看到下面的字樣:

init() was called.

service() was called.

service() was called.

service() was called.

這是我們加入的調試資訊。這些資訊說明了Servlet的一個生命周期中 init、service和destroy函數的執行過程。如果在Server欄中停止伺服器,那麼你可以在Console欄中的資訊中找到 destroy() 函數的執行

出處:http://www.cnblogs.com/DuLingFs/archive/2009/10/13/1582203.html

(抱怨一下,貼幾個圖檔,累死俺了)