
- Servlet 教程
- Servlet - 首頁
- Servlet - 概述
- Servlet - 環境設定
- Servlet - 生命週期
- Servlet - 示例
- Servlet - 表單資料
- Servlet - 客戶端請求
- Servlet - 伺服器響應
- Servlet - HTTP 狀態碼
- Servlet - 編寫過濾器
- Servlet - 異常處理
- Servlet - Cookie 處理
- Servlet - 會話跟蹤
- Servlet - 資料庫訪問
- Servlet - 檔案上傳
- Servlet - 日期處理
- Servlet - 頁面重定向
- Servlet - 點選計數器
- Servlet - 自動重新整理
- Servlet - 傳送電子郵件
- Servlet - 打包
- Servlet - 除錯
- Servlet - 國際化
- Servlet - 註解
- Servlet 有用資源
- Servlet - 問答
- Servlet - 快速指南
- Servlet - 有用資源
- Servlet - 討論
Servlet - 打包
包含 WEB-INF 子目錄的 Web 應用程式結構是所有 Java Web 應用程式的標準,並由 Servlet API 規範指定。給定一個頂級目錄名稱 myapp。以下是此目錄結構的樣子:
/myapp /images /WEB-INF /classes /lib
WEB-INF 子目錄包含應用程式的部署描述符,名為 web.xml。所有 HTML 檔案都應儲存在頂級目錄中,即 myapp。對於管理員使用者,您會發現 ROOT 目錄作為父目錄。
在包中建立 Servlet
WEB-INF/classes 目錄包含所有 servlet 類和其他類檔案,其結構與其包名稱匹配。例如,如果您具有完全限定的類名 **com.myorg.MyServlet**,則此 servlet 類必須位於以下目錄中:
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
以下是如何使用包名 com.myorg 建立 MyServlet 類的示例
// Name your package package com.myorg; // Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { private String message; public void init() throws ServletException { // Do required initialization message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); // Actual logic goes here. PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // do nothing. } }
編譯包中的 Servlet
編譯包中可用的類沒有什麼不同。最簡單的方法是將您的 java 檔案儲存在完全限定的路徑中,如上所述,該類將儲存在 com.myorg 中。您還需要將此目錄新增到 CLASSPATH。
假設您的環境已正確設定,請進入 **<Tomcat安裝目錄>** /webapps/ROOT/WEB-INF/classes 目錄,並按如下方式編譯 MyServlet.java
$ javac MyServlet.java
如果 servlet 依賴於任何其他庫,您還必須在 CLASSPATH 中包含這些 JAR 檔案。我只包含了 servlet-api.jar JAR 檔案,因為我在 Hello World 程式中沒有使用任何其他庫。
此命令列使用 Sun Microsystems Java 軟體開發工具包 (JDK) 附帶的內建 javac 編譯器。為了使此命令正常工作,您必須在 PATH 環境變數中包含您正在使用的 Java SDK 的位置。
如果一切順利,上面的編譯將在同一目錄中生成 **MyServlet.class** 檔案。下一節將解釋如何在生產環境中部署已編譯的 servlet。
打包的 Servlet 部署
預設情況下,servlet 應用程式位於路徑 <Tomcat安裝目錄>/webapps/ROOT,類檔案位於 <Tomcat安裝目錄>/webapps/ROOT/WEB-INF/classes。
如果您具有完全限定的類名 **com.myorg.MyServlet**,則此 servlet 類必須位於 WEB-INF/classes/com/myorg/MyServlet.class 中,並且您需要在位於 <Tomcat安裝目錄>/webapps/ROOT/WEB-INF/ 中的 **web.xml** 檔案中建立以下條目:
<servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.myorg.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/MyServlet</url-pattern> </servlet-mapping>
以上條目需要在 web.xml 檔案中已有的 <web-app>…</web-app> 標籤內建立。此表中可能已經存在各種條目,但沒關係。
您幾乎完成了,現在讓我們使用 <Tomcat安裝目錄>\bin\startup.bat(在 Windows 上)或 <Tomcat安裝目錄>/bin/startup.sh(在 Linux/Solaris 等上)啟動 Tomcat 伺服器,最後在瀏覽器的位址列中輸入 **https://:8080/MyServlet**。如果一切順利,您將得到以下結果:
Hello World