top
Loading...
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 中添加該目錄。

假設您的環境已正確設置,進入 <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。如果一切順利,您會看到下面的結果:

Hello World

北斗有巢氏 有巢氏北斗