1. 程式人生 > 其它 >Servlet 是什麼?Servlet 架構 Servlet 建立

Servlet 是什麼?Servlet 架構 Servlet 建立

技術標籤:Java

Servlet簡介

Servlet 是什麼?

Java Servlet 是執行在 Web 伺服器或應用伺服器上的程式,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 伺服器上的資料庫或應用程式之間的中間層。

使用 Servlet,您可以收集來自網頁表單的使用者輸入,呈現來自資料庫或者其他源的記錄,還可以動態建立網頁。

Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共閘道器介面)實現的程式可以達到異曲同工的效果。但是相比於 CGI,Servlet 有以下幾點優勢:

  • 效能明顯更好。
  • Servlet 在 Web 伺服器的地址空間內執行。這樣它就沒有必要再建立一個單獨的程序來處理每個客戶端請求。
  • Servlet 是獨立於平臺的,因為它們是用 Java 編寫的。
  • 伺服器上的 Java 安全管理器執行了一系列限制,以保護伺服器計算機上的資源。因此,Servlet 是可信的。
  • Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、資料庫或其他軟體進行互動。

Servlet 架構

下圖顯示了 Servlet 在 Web 應用程式中的位置。

Servlet 架構

Servlet 任務

Servlet 執行以下主要任務:

  • 讀取客戶端(瀏覽器)傳送的顯式的資料。這包括網頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程式的表單。
  • 讀取客戶端(瀏覽器)傳送的隱式的 HTTP 請求資料。這包括 cookies、媒體型別和瀏覽器能理解的壓縮格式等等。
  • 處理資料並生成結果。這個過程可能需要訪問資料庫,執行 RMI 或 CORBA 呼叫,呼叫 Web 服務,或者直接計算得出對應的響應。
  • 傳送顯式的資料(即文件)到客戶端(瀏覽器)。該文件的格式可以是多種多樣的,包括文字檔案(HTML 或 XML)、二進位制檔案(GIF 影象)、Excel 等。
  • 傳送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文件型別(例如 HTML),設定 cookies 和快取引數,以及其他類似的任務。

Servlet 包

Java Servlet 是執行在帶有支援 Java Servlet 規範的直譯器的 web 伺服器上的 Java 類。

Servlet 可以使用javax.servletjavax.servlet.http包建立,它是 Java 企業版的標準組成部分,Java 企業版是支援大型開發專案的 Java 類庫的擴充套件版本。

這些類實現 Java Servlet 和 JSP 規範。在寫本教程的時候,二者相應的版本分別是 Java Servlet 2.5 和 JSP 2.1。

Java Servlet 就像任何其他的 Java 類一樣已經被建立和編譯。在您安裝 Servlet 包並把它們新增到您的計算機上的 Classpath 類路徑中之後,您就可以通過 JDK 的 Java 編譯器或任何其他編譯器來編譯 Servlet。

、實現 Servlet 介面

因為是實現 Servlet 介面,所以我們需要實現接口裡的方法。

下面我們也說明了 Servlet 的執行過程,也就是 Servlet 的生命週期。

//Servlet的生命週期:從Servlet被建立到Servlet被銷燬的過程
//一次建立,到處服務
//一個Servlet只會有一個物件,服務所有的請求
/*
 * 1.例項化(使用構造方法建立物件)
 * 2.初始化  執行init方法
 * 3.服務     執行service方法
 * 4.銷燬    執行destroy方法
 */
public class ServletDemo1 implements Servlet {

    //public ServletDemo1(){}

     //生命週期方法:當Servlet第一次被建立物件時執行該方法,該方法在整個生命週期中只執行一次
    public void init(ServletConfig arg0) throws ServletException {
                System.out.println("=======init=========");
        }

    //生命週期方法:對客戶端響應的方法,該方法會被執行多次,每次請求該servlet都會執行該方法
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        System.out.println("hehe");

    }

    //生命週期方法:當Servlet被銷燬時執行該方法
    public void destroy() {
        System.out.println("******destroy**********");
    }
//當停止tomcat時也就銷燬的servlet。
    public ServletConfig getServletConfig() {

        return null;
    }

    public String getServletInfo() {

        return null;
    }
}

2、繼承 GenericServlet 類

它實現了 Servlet 介面除了 service 的方法,不過這種方法我們極少用。

public class ServletDemo2 extends GenericServlet {

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        System.out.println("heihei");

    }
}

3、繼承 HttpServlet 方法

public class ServletDemo3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("haha");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("ee");
        doGet(req,resp);
    }

}

建立 Servlet 的第三種方法,也是我們經常用的方法。

這裡只簡單講 Servlet 的三種建立方式,關於更詳細的應用我們後面再說。

條碼倉庫管理系統 條碼管理系統