Java Servlet

爪哇编程语言类

Servlet(Server Applet),全稱Java Servlet。是用Java編寫的伺服器程式。其主要功能在於互動式地瀏覽和修改數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個介面,廣義的Servlet是指任何實現了這個Servlet介面的類別,一般情況下,人們將Servlet理解為後者。

Servlet執行於支援Java的應用伺服器中。從實現上講,Servlet可以響應任何類別型的請求,但絕大多數情況下Servlet只用來擴充基於HTTP協定Web伺服器

最早支援Servlet標準的是JavaSoft的Java Web Server。此後,一些其它的基於Java的Web伺服器開始支援標準的Servlet。

歷史

Servlet API 歷史
Servlet API 版本 發佈日期 平台 重要變化
Servlet 5.0 2020年6月12日頁面存檔備份,存於互聯網檔案館 Jakarta EE 9 遷移包名到「jakarta.servlet
Servlet 4.0.3 2019年3月13日頁面存檔備份,存於互聯網檔案館 Jakarta EE 8 去除「Java」商標
Servlet 4.0 2017年9月頁面存檔備份,存於互聯網檔案館 Java EE 8 HTTP/2
Servlet 3.1 2013年5月頁面存檔備份,存於互聯網檔案館 Java EE 7 Non-blocking I/O, HTTP protocol upgrade mechanism (WebSocket)[1]
Servlet 3.0 2009年12月 Java EE 6, Java SE 6 Pluggability, Ease of development, Async Servlet, Security, File Uploading
Servlet 2.5 2005年9月 Java EE 5, Java SE 5 Requires Java SE 5, supports annotation
Servlet 2.4 2003年11月 J2EE 1.4, J2SE 1.3 web.xml uses XML Schema
Servlet 2.3 2001年8月 J2EE 1.3, J2SE 1.2 Addition of Filter
Servlet 2.2 1999年8月 J2EE 1.2, J2SE 1.2 Becomes part of J2EE, introduced independent web applications in .war files
Servlet 2.1 1998年11月 Unspecified First official specification, added RequestDispatcher, ServletContext
Servlet 2.0 JDK 1.1 Part of Java Servlet Development Kit 2.0
Servlet 1.0 1997年6月

工作模式

  • 客戶端傳送請求至伺服器
  • 伺服器啟動並呼叫Servlet,Servlet根據客戶端請求生成響應內容並將其傳給伺服器
  • 伺服器將響應返回客戶端
  • 其他

通用Servlet

一般來說,通用Servlet由javax.servlet.GenericServlet實作Servlet介面。程式設計人員可以通過使用或繼承這個類別來實現通用Servlet應用。

HttpServlet

javax.servlet.http.HttpServlet實現了專門用於響應HTTP請求的Servlet,提供了響應對應HTTP標準請求的doGet()、doPost()等方法。

生命周期

當servlet被部署在應用伺服器中(應用伺服器中用於管理Java組件的部分被抽象成為容器)以後,由容器控制servlet的生命周期。除非特殊指定,否則在容器啟動的時候,servlet是不會被載入的,servlet只會在第一次請求的時候被載入和實例化。servlet一旦被載入,一般不會從容器中刪除,直至應用伺服器關閉或重新啟動。但當容器做記憶體回收動作時,servlet有可能被刪除。也正是因為這個原因,第一次訪問servlet所用的時間要大大多於以後訪問所用的時間。

servlet在伺服器的執行生命周期為,在第一次請求(或其實體被主記憶體垃圾回收後再被訪問)時被載入並執行一次初始化方法,跟着執行正式執行方法,之後會被常駐並每次被請求時直接執行正式執行方法,直到伺服器關閉或被清理時執行一次銷毀方法後實體銷毀。

與JSP的關係

Java伺服器頁面(JSP)是HttpServlet的擴充。由於HttpServlet大多是用來響應HTTP請求,並返回Web頁面(例如HTMLXML),所以不可避免地,在編寫servlet時會涉及大量的HTML內容,這給servlet的書寫效率和可讀性帶來很大障礙,JSP便是在這個基礎上產生的。其功能是使用HTML的書寫格式,在適當的地方加入Java代碼片段,將程式設計師從複雜的HTML中解放出來,更專注於servlet本身的內容。

JSP在首次被訪問的時候被應用伺服器轉換為servlet,在以後的執行中,容器直接呼叫這個servlet,而不再訪問JSP頁面。JSP的實質仍然是servlet。

參見

參考文獻

  1. ^ What's new in Servlet 3.1? - Java EE 7 moving forward. [2016-09-07]. (原始內容存檔於2017-01-17). 

外部連結