第二十章 Servlet 包

關於本篇文章

瞭解一些 servlet 概念,本編文章只進行一些文章格式修改,文章內使用的圖片均來自 Runoob 網站

致謝

感謝 Runoob 提供的相關資料,官方資料地址Servlet 教程

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.*;

@WebServlet("/MyServlet")
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;charset=UTF-8");
 
      // 實際的邏輯是在這裏
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()
  {
      // 什麼也不做
  }
}

編譯包中的 Servlet

編譯包中的類與編譯其他的類沒有什麼大的不同。最簡單的方法是讓您的 java 文件保留完全限定路徑,如上面提到的類,將被保留在 com.myorg 中。您還需要在 CLASSPATH 中添加該目錄。

假設您的環境已正確設置,進入 /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 應用程序位於路徑 /webapps/ROOT 下,且類文件放在 /webapps/ROOT/WEB-INF/classes 中。

如果您有一個完全合格的類名稱 com.myorg.MyServlet,那麼這個 Servlet 類必須位於 WEB-INF/classes/com/myorg/MyServlet.class 中,您需要在位於 /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 文件中的 … 標籤內。在該文件中可能已經有各種可用的條目,但不要在意。

到這裏,您基本上已經完成了,現在讓我們使用 \bin\startup.bat(在 Windows 上)或 /bin/startup.sh(在 Linux/Solaris 等上)啓動 tomcat 服務器,最後在瀏覽器的地址欄中輸入 http://localhost:8080/MyServlet。如果一切順利,您會看到下面的結果:

Hello World

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章