Servlet 簡(jiǎn)介

2023-06-13 17:16 更新

Servlet 教程

Servlet 為創(chuàng)建基于 web 的應(yīng)用程序提供了基于組件、獨(dú)立于平臺(tái)的方法,可以不受 CGI 程序的性能限制。Servlet 有權(quán)限訪問(wèn)所有的 Java API,包括訪問(wèn)企業(yè)級(jí)數(shù)據(jù)庫(kù)的 JDBC API。
本教程將講解如何使用 Java Servlet 來(lái)開(kāi)發(fā)基于 web 的應(yīng)用程序。

誰(shuí)適合閱讀本教程?

本教程是專(zhuān)為 Java 程序員設(shè)計(jì)的。在閱讀本教程之前,需要先了解 Java Servlet 框架和它的 API。學(xué)習(xí)完本教程后,您會(huì)發(fā)現(xiàn)自己已經(jīng)達(dá)到使用 Java Servlet 的中等水平,后續(xù)您可以自行通過(guò)更深入的學(xué)習(xí)和實(shí)踐完成進(jìn)階。

閱讀本教程前,您需要了解的知識(shí):

在您開(kāi)始閱讀本教程之前,最好對(duì) Java 編程語(yǔ)言有一個(gè)很好的理解。如果您對(duì) web 應(yīng)用程序和互聯(lián)網(wǎng)如何工作的有基本的認(rèn)識(shí),將有助于您理解本教程。

Servlet 相關(guān)教程

Servlet 是什么?

Java Servlet 是運(yùn)行在 Web 服務(wù)器或應(yīng)用服務(wù)器上的程序,它是作為來(lái)自 Web 瀏覽器或其他 HTTP 客戶端的請(qǐng)求和 HTTP 服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序之間的中間層。

使用 Servlet,您可以收集來(lái)自網(wǎng)頁(yè)表單的用戶輸入,呈現(xiàn)來(lái)自數(shù)據(jù)庫(kù)或者其他源的記錄,還可以動(dòng)態(tài)創(chuàng)建網(wǎng)頁(yè)。

Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網(wǎng)關(guān)接口)實(shí)現(xiàn)的程序可以達(dá)到異曲同工的效果。但是相比于 CGI,Servlet 有以下幾點(diǎn)優(yōu)勢(shì):

  • 性能明顯更好。
  • Servlet 在 Web 服務(wù)器的地址空間內(nèi)執(zhí)行。這樣它就沒(méi)有必要再創(chuàng)建一個(gè)單獨(dú)的進(jìn)程來(lái)處理每個(gè)客戶端請(qǐng)求。
  • Servlet 是獨(dú)立于平臺(tái)的,因?yàn)樗鼈兪怯?Java 編寫(xiě)的。
  • 服務(wù)器上的 Java 安全管理器執(zhí)行了一系列限制,以保護(hù)服務(wù)器計(jì)算機(jī)上的資源。因此,Servlet 是可信的。
  • Java 類(lèi)庫(kù)的全部功能對(duì) Servlet 來(lái)說(shuō)都是可用的。它可以通過(guò) sockets 和 RMI 機(jī)制與 applets、數(shù)據(jù)庫(kù)或其他軟件進(jìn)行交互。

Servlet 架構(gòu)

下圖顯示了 Servlet 在 Web 應(yīng)用程序中的位置。

Servlet 架構(gòu)

Servlet 任務(wù)

Servlet 執(zhí)行以下主要任務(wù):

  • 讀取客戶端(瀏覽器)發(fā)送的顯式的數(shù)據(jù)。這包括網(wǎng)頁(yè)上的 HTML 表單,或者也可以是來(lái)自 applet 或自定義的 HTTP 客戶端程序的表單。
  • 讀取客戶端(瀏覽器)發(fā)送的隱式的 HTTP 請(qǐng)求數(shù)據(jù)。這包括 cookies、媒體類(lèi)型和瀏覽器能理解的壓縮格式等等。
  • 處理數(shù)據(jù)并生成結(jié)果。這個(gè)過(guò)程可能需要訪問(wèn)數(shù)據(jù)庫(kù),執(zhí)行 RMI 或 CORBA 調(diào)用,調(diào)用 Web 服務(wù),或者直接計(jì)算得出對(duì)應(yīng)的響應(yīng)。
  • 發(fā)送顯式的數(shù)據(jù)(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進(jìn)制文件(GIF 圖像)、Excel 等。
  • 發(fā)送隱式的 HTTP 響應(yīng)到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類(lèi)型(例如 HTML),設(shè)置 cookies 和緩存參數(shù),以及其他類(lèi)似的任務(wù)。

Servlet 包

Java Servlet 是運(yùn)行在帶有支持 Java Servlet 規(guī)范的解釋器的 web 服務(wù)器上的 Java 類(lèi)。

Servlet 可以使用 javax.servletjavax.servlet.http 包創(chuàng)建,它是 Java 企業(yè)版的標(biāo)準(zhǔn)組成部分,Java 企業(yè)版是支持大型開(kāi)發(fā)項(xiàng)目的 Java 類(lèi)庫(kù)的擴(kuò)展版本。

這些類(lèi)實(shí)現(xiàn) Java Servlet 和 JSP 規(guī)范。在寫(xiě)本教程的時(shí)候,二者相應(yīng)的版本分別是 Java Servlet 2.5 和 JSP 2.1。

Java Servlet 就像任何其他的 Java 類(lèi)一樣已經(jīng)被創(chuàng)建和編譯。在您安裝 Servlet 包并把它們添加到您的計(jì)算機(jī)上的 Classpath 類(lèi)路徑中之后,您就可以通過(guò) JDK 的 Java 編譯器或任何其他編譯器來(lái)編譯 Servlet。

 Java 是 Sun 公司創(chuàng)建的項(xiàng)目,但 Sun 公司后來(lái)被 Oracle 給收購(gòu)了。

Oracle 將 JavaEE 規(guī)范捐贈(zèng)給了 Eclipse 基金會(huì)。

但是 Oracle 有一個(gè)意見(jiàn),JavaEE 需要改名,不能再帶著 Java 這個(gè)詞。

因此 Eclipse 基金會(huì)在討論后,將 JavaEE 重命名為了 JakartaEE。javax 也就變成了 jakartax。
所以servlet高版本(大于4.0版本,或者tomcat版本大于10)的使用應(yīng)該使用jakarta.servlet

下一步呢?

接下來(lái),本教程會(huì)帶你一步一步地設(shè)置您的 Servlet 環(huán)境,以便開(kāi)始后續(xù)的 Servlet 使用。因此,請(qǐng)系緊您的安全帶,隨我們一起開(kāi)始 Servlet 的學(xué)習(xí)之旅吧!相信您會(huì)很喜歡這個(gè)教程的。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)