Servlet 套件
涉及到 WEB-INF 子目錄的 Web 應用程式結構是所有的 Java web 應用程式的標準,並由 Servlet API 規範指定。給定一個頂層目錄名稱 myapp,目錄結構如下所示:
/myapp /images /WEB-INF /classes /lib
WEB-INF 子目錄中包含應用程式的部署描述符,名稱為 web.xml。所有的 HTML 檔案都位於頂層目錄 myapp 下。對於 admin 用戶,您會發現 ROOT 目錄是 myApp 的父目錄。
建立套件中的 Servlet
WEB-INF/classes 目錄包含了所有的 Servlet 類別和其他類別文件,類別文件所在的目錄結構與他們的套件名稱相符。例如,如果您有一個完全符合資格的類別名稱com.myorg.MyServlet,那麼這個Servlet 類別必須位於下列目錄中:
/myapp/WEB-INF/classes/com/myorg/MyServlet.class
下面的範例建立套件名稱 com.myorg 的MyServlet 類別。
// 为包命名 package com.myorg; // 导入必需的 java 库 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { private String message; public void init() throws ServletException { // 执行必需的的初始化 message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html"); // 实际的逻辑是在这里 PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // 什么也不做 } }
#編譯套件中的 Servlet
編譯套件中的類別與編譯其他的類別沒有什麼大的不同。最簡單的方法是讓您的 java 檔案保留完全限定路徑,如上面提到的類,將保留在 com.myorg 中。您還需要在 CLASSPATH 中新增該目錄。
假設您的環境已正確設置,進入<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 目錄,並編譯MyServlet.java,如下所示:
$ javac MyServlet.java
如果Servlet 依賴其他函式庫,那麼您必須在CLASSPATH 中也要引用那些JAR 檔案。這裡我只引用了 servlet-api.jar JAR 文件,因為我在 Hello World 程式中並沒有使用任何其他函式庫。
此命令列使用內建的 javac 編譯器,它是 Sun Microsystems Java 軟體開發工具包(JDK,全名為 Java Software Development Kit)附帶的。 Microsystems的Java軟體開發工具包(JDK)。為了讓該指令正常運作,必須包括您在 PATH 環境變數中所使用的 Java SDK 的位置。
如果一切順利,上述編譯會在同一目錄下產生 MyServlet.class 檔案。下一節將說明如何將一個已編譯的 Servlet 部署到生產中。
Servlet 打包部署
預設情況下,Servlet 應用程式位於路徑<Tomcat-installation-directory>/webapps/ROOT 下,且類別檔案放在<Tomcat-installation-directory>在 ;/webapps/ROOT/WEB-INF/classes 中。
如果您有一個完全符合資格的類別名稱com.myorg.MyServlet,那麼這個Servlet 類別必須位於WEB-INF/classes/com/myorg/MyServlet.class 中,您需要在位於<Tomcat-installation-directory>/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-installation-directory>\bin\startup.bat(在Windows 上)或<Tomcat-installation-directory>/bin /startup.sh(在Linux/Solaris 等上)啟動tomcat 伺服器,最後在瀏覽器的網址列中輸入http://localhost:8080/MyServlet。如果一切順利,您會看到下面的結果:
###########