新手上路: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是什麼東東?)

下一步,輸入項目名 LearnJSP。下面的Target Runtime指定運作這個項目的伺服器,如果你已經在配置Lomboz 的一節中配置好了Tomcat伺服器,那麼在這裡你可以看到相應的伺服器配置,選擇它即可。如果選擇框中隻有<none>,說明你還沒有配置伺服器,可以單擊右側的New...按鈕建立。
Configurations項選擇<none>即可。
(jt00152685:我的項目名為HelloServlet1,之前建了一個HelloServlet的java project,失敗了)
下一步選擇項目所需的特性,預設的Dynamic Web Module和Java就足夠了。
(j00152685:我的eclipse中,上一步和這一步是在一起的。另外,Dynamic Web Module是指什麼?)
下一步是輸入相關的目錄,這裡也直接使用預設值即可。圖略。
最後單擊 Finish,完成項目建立。建立途中可能會有一個使用者使用協定需要你同意,單擊I Agree即可。建立完成後會詢問是否要切換到J2EE視圖(下圖),選擇Yes,完成項目建立。
項目建立完成後,請在左側的 Project Explorer 中打開 LearnJSP 項目,看看它各個部分的構成。
從基礎知識一節中我們知道,應用程式由三部分組成,即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是一個接口,位于 javax.servlet.Servlet,它規定了每個Servlet所必須實作的方法。實際應用時我們需要從 javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 兩個抽象類繼承出自己的Servlet類,并實作所需的功能。這幾個類的關系如下(綠色斜體字為抽象類):
上圖中,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,建立如下所示的類。
包名輸入我們要建立的 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,出現下面的畫面。
因為我們已經寫好了HelloServlet類,是以選中Use existing Servlet class,然後單擊右側的Browse...按鈕,選擇HelloServlet類。下一步。
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欄,可以看到系統中的伺服器清單。
如果你找不到Server欄,請通過主菜單Window->Show View->Others添加Server欄;如果你的Server欄中什麼都沒有,請在Server欄中單擊右鍵然後 New->Server。
右鍵單擊伺服器,選擇Add and Remove Projects...,将 LearnJSP(j00152685:HelloServlet1)項目添加到伺服器上。添加之後的結果如下:
最後右鍵單擊伺服器,選擇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
(抱怨一下,貼幾個圖檔,累死俺了)