Java Servlet系列之Servlet入門

來源:互聯網
上載者:User

什麼是Servlet

        Servlet是一種伺服器端的Java應用程式,具有獨立於平台和協議的特性,可以產生動態Web頁面。它擔當客戶請求(Web瀏覽器或其他HTTP客戶程式)與伺服器響應(HTTP伺服器上的資料庫或應用程式)的中介層。

        Servlet是位於Web伺服器內部的伺服器端的Java應用程式,與傳統的從命令列啟動的Java應用程式不同,Servlet由Web伺服器進行載入,該Web伺服器必須包含支援Servlet的Java虛擬機器。

Servlet相關名稱

Web伺服器

       Web伺服器,即Web Server,是Web(互連網)上的一台或多台機器。這些機器上部署了系統軟體以及需要在網路中共用的資訊。用戶端可以通過HTTP協議訪問部署到伺服器上的資源。

應用伺服器

       應用伺服器,即Application Server,是網路上一台或多台機器。這些機器上部署了系統軟體用以為用戶端以及其他伺服器比如Web伺服器提供資料服務、業務處理服務等。常見的應用伺服器包括檔案伺服器、列印伺服器以及運行著EJB組件的EJB伺服器等。

Servlet容器

       Servlet容器,即Servlet Container,是Web伺服器或應用伺服器的組成部分,它可以為Servlet提供請求和響應的服務,同時也負責管理Servlet的生命週期。Servlet容器也可以為Servlet提供其它的服務,比如資源服務、安全服務、線程的服務等。Servlet容器即可以整合到Web伺服器或應用伺服器中,也可以作為獨立的程式嵌入到Web伺服器或應用伺服器中。

Servlet作用

       Servlet規範通過規定一個編程的架構來達到擴充伺服器功能的目的,採用要求-回應模式提供基於Web的服務。當客戶機發送請求至伺服器時,伺服器將請求資訊轉寄給Servlet,Servlet處理請求並產生響應內容並將其傳給Web伺服器,然後再由Web伺服器將響應返回給用戶端。

Servlet實現過程

       最早支援Servlet技術的是JavaSoft的Java Web Server。此後,一些其它的基於Java的WebServer開始支援標準的ServletAPI。Servlet的主要功能在於互動式地瀏覽和修改資料,產生動態Web內容。這個過程為:

  1. 用戶端發送請求至伺服器端
  2. 伺服器將請求資訊發送至Servlet
  3. Servlet產生響應資訊並將其傳給伺服器。響應內容動態產生,通常取決於用戶端的請求
  4. 伺服器將響應返回給用戶端

圖為 “用戶端與伺服器Servlet互動過程”
       其實,一個servlet就是Java程式設計語言中的一個類,它被用來擴充伺服器的效能,伺服器上駐留著可以通過“要求-回應”編程模型來訪問的應用程式。雖然servlet可以對任何類型的請求產生響應,但通常只用來擴充Web伺服器的應用程式。

Web容器

Web容器有兩大功能,分別是:

  1. 提供編寫Servlet程式所需要的API
  2. 提供駐留並執行Servlet程式的環境
       這個Servlet運行環境可以完成Servlet程式的執行個體化、初始化、調用服務方法和去除Servlet的功能,也就是說Web容器可以管理Servlet的生命週期。Servlet駐留在Web容器中,並由Web容器進行管理。Web容器通過轉寄Web伺服器和Servlet之間的請求與響應來充當兩者之間的橋樑。
       常見的Java Web容器包括:Tomcat,JBoss,WebLogic,WebSphere等。
正確認識ServletServlet不可以獨立運行       Servlet必須運行在Servlet容器中,由容器調用它的生命週期方法,上文的Web容器也有聲明。因此,Servlet不需要main方法。Servlet不是線程       Servlet就是一個普通的Java對象,它實現了Servlet介面,並沒有繼承於Thread,因此,Servlet不是線程。當伺服器接收到用戶端請求時,它會在一個單獨的線程中來執行Servlet的方法。
與傳統CGI的比較       與傳統的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節省投資。在未來的技術發展過程中,Servlet有可能徹底取代CGI。
       在傳統的CGI中,每個請求都要啟動一個新的進程,如果CGI程式本身的執行時間較短,啟動進程所需要的開銷很可能反而超過實際執行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的作業系統進程)。
       在傳統CGI中,如果有N個並發的對同一CGI程式的請求,則該CGI程式的代碼在記憶體中重複裝載了N次;而對於Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在效能最佳化方面,Servlet也比CGI有著更多的選擇。     1.
方便         Servlet提供了大量的工具 + 生產力常式,例如自動地解析和解碼HTML表單資料、讀取和設定HTTP頭、處理Cookie、跟蹤工作階段狀態等。
     2.
功能強大         在Servlet中,許多使用傳統CGI程式很難完成的任務都可以輕鬆地完成。例如,Servlet能夠直接和Web伺服器互動,而普通的CGI程式不能。Servlet還能夠在各個程式之間共用資料,使得資料庫連接池之類的功能很容易實現。
     3.
可移植性好         Servlet用Java編寫,ServletAPI具有完善的標準。因此,為IPlanet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、MicrosoftIIS或者WebStar。幾乎所有的主流伺服器都直接或通過外掛程式支援Servlet。
     4.
節省投資        不僅有許多廉價甚至免費的Web伺服器可供個人或小規模網站使用,而且對於現有的伺服器,如果它不支援Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。

PS:Servlet入門只是Java Servlet系列的第一篇文章,作為Java Servlet的入門基礎知識,後續還會有幾篇文章來繼續深入的研究Servlet。文章還存在不足之處,歡迎各位大神批評指正。

參考:《servlet詳細講解》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.