◆ tomcat是一個專門用於web服務的伺服器軟體. 1.運行 : 設定完畢後就可以運行 tomcat伺服器了,進入tomcat的bin目錄,windows下用startup啟動tomcat,相應的關閉tomcat的命令為shutdown和shutdown.sh。啟動後可以在瀏覽器中輸入http://localhost:8080/測試。你可以測試其內建的jsp和servlet樣本。 http://www.it315.org/a.html 瀏覽器發給伺服器的資訊為: GET /a.html HTTP/1.1 伺服器會去根目錄下找 a.html檔案。此根目錄是“TOMCAT安裝目錄/webapps/ROOT”。 如果 /代表“C:/abc” 那麼就去找 C:/abc/a.html檔案。 虛擬目錄: http://www.it315.org/xxx/a.html 如果把上面的“ /xxx”映射成了“d:/” 那麼就去找 D:/a.html檔案。 127.0.0.1:代表本地 localhost:通常情況下配置為本地,實質上不是。可以在 windows/system32/drivers/etc/hosts檔案改。 http://www.it315.org:8080會解析 www.it315.org,首先把www.it315.org在hosts裡面所對應的IP地址,找不到再去 找dns 一個網站下可以有多個虛擬目錄,每個虛擬目錄就是一個獨立的 WEB應用程式。每個web應用程式都有自己的配置資訊。 jar -cvf fileName.war 被打包的檔案 jar -cvf fileName.war -C 被打包的檔案夾 被打包的檔案夾中的檔案 servlet是被 web伺服器去調用的。 ◆HTTP請求、響應和頭資訊: 1.用戶端發送的請求訊息為文字資料流,由以下內容組成: 請求行 包括方法、統一資源表示符、HTTP協議版本。 頭資訊 典型的請求訊息類似以下內容:
| GET image/bar01.jpg HTTP/1.1 User-Agent:Mozilla/4.0 (compatible;MSIE 4.0 : Windows 2000) Accept:image/gif,image/jpeg,text/*,*/* |
第一行使用GET方法擷取bar01.jpg檔案,並指定正在使用的是HTTP協議1.1版本,後續行包括頭資訊,User-Agent頭指示用戶端使用的瀏覽器,Accept頭提供有關用戶端可以接受的MIME類型列表,在頭資訊之後,用戶端發送一個空白行,指示訊息請求結束,如果有表單等內容則將表單內容作為實體在空白行後面一起提交。 2.請求訊息由伺服器經一步處理,並產生相應的相應訊息,響應訊息由以下元素組成: 狀態行 頭資訊 實體內容(即網頁中要顯示的內容) 以下是一個典型的響應訊息樣本:
| HTTP/1.1 200 OK Server:JavaWebServer Last-modified:Tuesday,07-Sep-04 1:14:34 GMT Content-length:100 Content-type:text/plain <html> ……………… ……………… </html> |
第一行為狀態行,其中的狀態代碼200表示已成功處理請求,因此描述為“OK”,404是找不到網頁時常遇到的狀態代碼,接下來一直到空白行之前都是頭資訊。包括伺服器使用的軟體,檔案最後修改時間,長度及內容的類型等資訊,空白行是實體內容。 ◆ WEB應用程式: 基於 java的WEB應用程式由Servlet、Jsp、圖象、HTML、JavaBean、Applet等組成。要部署一個WEB應用程式一種簡便的方法就是將所有與WEB應用程式關聯的檔案打包成一個.war檔案,與Servlet規範相容的所有Web容器都支援.war檔案。 一個 WEB應用程式都有一個頂層目錄,一般由以下部分組成: 1. 靜態檔案:包括 HTML檔案和圖象等。 2. JSP分頁檔 3. WEB-INF檔案夾:注意,該目錄不能被引用。由以下部分組成: ● classes目錄:Servlet類、JavaBean類和其他所有類檔案。 ● lib目錄:包含WEB應用程式所需的所有.jar檔案。例如資料庫連接包等。 ● tags目錄:包含自訂標籤提供實現的tag檔案 ● web.xml:Web應用的部署描述符檔案。該檔案包含有關WEB應用程式(如要顯示的預設頁、要載入的Servlet等)的中繼資料資訊 ◆ 設定WEB網站的虛擬子目錄: 1. 將本機電腦上C:/WebDemo目錄映射成為web網站的/demo虛擬子目錄可以如下配置:開啟Tomcat安裝目錄/conf/server.xml檔案,在<host>元素中間加上一行: <Context path=”/demo” decBase=”C:/WebDemo” debug=”0”> 啟動Tomcat,在IE地址欄中輸入 http://127.0.0.1:8080/demo就能看到C:/WebDemo下面的所有檔案了。例如此目錄下有demo.html檔案,單擊它就能看到demo.html中的內容了。 2. 也可以使用jar命令將C:/WebDemo目錄打包成C:/WebDemo.jar檔案。步驟如下: 1) 啟動命令列視窗,進入C:/WebDemo目錄 2) 執行如下命令:jar –cvf WebDemo.war . 注意後面的點,它代表目前的目錄,上面的命令將C:/WebDemo中所有內容壓縮成WebDemo.war檔案,但不包含C:/WebDemo目錄本身。 3) 將WebDemo.war移到Tomcat安裝目錄/webapps目錄下,重啟Tomcat,在IE地址欄中輸入 http://127.0.0.1:8080/WebDemo就能看到C:/WebDemo下面的所有檔案了。例如此目錄下有demo.html檔案,單擊它就能看到demo.html中的內容了。
注意:此步驟在執行jar命令時如果此目錄的WEB-INF檔案夾中沒有web.xml檔案,Tomcat將使用預設的web.xml檔案內容,如果有則以此web.xml檔案為準,所以此web.xml檔案必須書寫正確(包括文法和配置)。 3. 也可以直接把C:/WebDemo拷到Tomcat安裝目錄/webapps目錄下,但是必須有一個WEB-INF目錄,如果WEB-INF目錄下有web.xml檔案,此web.xml檔案必須書寫正確(包括文法和配置)。 ◆ 下面是一個簡單的servlet檔案編寫、編譯、註冊和啟動並執行過程: 1.首先建立一個WebRoot目錄,此目錄下檔案結構如下: WebRoot |—WEB-INF檔案夾 |—classes檔案夾 | |-HelloServlet.class檔案 |-web.xml檔案 2.編寫一個servlet檔案,範例程式碼如下: //匯入一些要用到的類 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; //繼承HttpServlet public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; //重寫父類中的service方法 @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //從HttpServletResponse中獲得一個輸出資料流 PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<body>Hello World</body>"); out.println("</html>"); out.close(); } } 3.編譯(必須要把 Tomcat安裝目錄/common/lib/servlet-api.jar設定到classpath中),沒錯誤後把HellpServlet.class放到上面的classes目錄下。 4.寫web.xml檔案,範例程式碼如下: <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!—註冊servlet--> <servlet> <servlet-name>AnyName</servlet-name>―――――――――| <servlet-class> HelloServlet</servlet-class> | </servlet> |名字 |必須 <!—指定映射到此servlet的url--> |一致 <servlet-mapping> | <servlet-name>AnyName</servlet-name>――――――――― | <url-pattern>/demo/test.html</url-pattern> </servlet-mapping> </web-app> 5.運行,啟動Tomcat,在IE欄中輸入 http://127.0.0.1:8080/demo/test.html斷行符號, 網頁中顯示出了HelloWorld,如果有錯可能由於一下原因:Tomcat沒啟動,大小寫有誤等等。