Java Servlet系列之Servlet入門

什麼是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等。

正確認識Servlet
Servlet不能夠獨立運行
       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詳細講解》

相關文章
相關標籤/搜索