Java Servlet 是運行在 Web 服務器或應用服務器上的程序。
Java Servlet是一個基於Java技術的Web組件,用於動態生成內容(HTML、JS),提供Web Server與Web Application的橋樑,通過Web Client達到與Web Server之間的動態交互。
Java Servlet 是來自 Web 瀏覽器或其他 HTTP 客戶端的請求 和 HTTP 服務器上的數據庫或應用程序之間 的中間層。
使用 Servlet,可以收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。
Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網關接口)實現的程序可以達到異曲同工的效果。但是相比於 CGI,Servlet 有以下幾點優勢:
- 性能明顯更好。
- Servlet 在 Web 服務器的地址空間內執行 。這樣它就沒有必要再創建一個單獨的進程來處理每個客戶端請求。
- Servlet 是 獨立於平臺的,因爲它們是用 Java 編寫的。
- 服務器上的 Java 安全管理器執行了一系列限制,以保護服務器計算機上的資源。因此, Servlet 是可信的。
- Java 類庫的全部功能對 Servlet 來說都是可用的。它可以通過 sockets 和 RMI 機制與 applets、數據庫或其他軟件進行交互。
CGI與Servlet的區別:
- CGI:當Web Client發起請求時,CGI會啓動一個 進程調用,並把結果返回給Web Client(由於進程調用,進程之間實例是 無法共享實例)。
- Servlet:當Web Client發起請求時,Web Server(符合Servlet規範的容器:Tomcat、Jetty)會啓動一個線程調度(根據請求的URL,Match到具體的的Servlet,並調用(委託)相應的Servlet的service方法。由於線程調度,線程之間的實例是可以共享的,所以Servlet是線程不安全的對象) -