就是愛分享
JSP與Java Servlet皆是在伺服端執行程式,同樣也是用來設計互動式網頁上的技術,既然這二者之間有著這些共通處,那它們兩者之間又有何不同呢?

Java servlet(底下通稱為servlet)本身就是一種Java程式,主要是應用在網頁上的一種伺服端技術,與JSP有著相當密切的關係,底下就其特性與架構進行基礎的說明。

servlet的特性
servlet出現之前,程式設計人員使用一種簡稱為CGI(Common Gateway Interface)的技術設計伺服端執行的動態網頁,達到與web使用者雙向動態溝通的目的。由於CGI程式每執行一次便會產生一個新的行程(Process),一定數量的連線人數便會輕易的佔用掉Server端龐大的系統資源,快速降低系統的執行效率。

CGI另一項致命的缺陷同樣與其所產生的行程有關,由於各行程本身獨立且彼此無法溝通,導致連線過程當中,各種資訊的傳遞難以被處理。

servlet透過多執行緒機制解決行程所衍生的諸多問題,相較於行程,執行緒所耗用的資源相當輕,同時一個行程可執行多個執行緒而不會有效能上的問題,同時由於連線狀態均由同一個行程作處理,因此可以輕易的讓各階段的連線進行溝通。

servlet程式執行之前必須經過編譯,而產生的class檔案則存放在伺服端電腦的固定資料夾下,當客戶端使用者對伺服器提出請求時,則會自動執行被請求的servlet程式,最後再回應給客戶端所需的資料。

除了傳統CGI所面臨的問題,servlet另一項優勢在於由標準的Java所寫成,而Java語言的特性之一就是跨平台,也因此servlet自然的擁有跨平台的能力。只要支援servlet語言的網頁伺服器都能順利的執行servlet程式。

servlet的架構
雖然說servlet本身就是個Java程式,但它在架構上卻和Java程式有所不同。servlet程式中並沒有main()這個方法,此為它和Java程式主要的不同處。此外,設計servlet程式必須使用javax.servlet及javax.servlet.http這二個套件下的類別及介面。

下面讓我們概略地解說這兩個套件在設計伺服器端程式上的用途:
javax.servlet:在這個套件底下所定義的是一些和FTP協定無關的類別及介面,主要是用來協助servlet程式處理客戶端送來地請求或將servlet執行的結果傳給客戶端。
javax.http.servlet:這個套件則是繼承自上一個Javax.servlet套件,並增加了與HTTP協定有關的類別及介面,例如處理SMTP或HTTP協定之類別或介面。

除了上述支援servlet的專屬套件,servlet程式事實上同樣可以存取Java本身所提供的眾多類別API,這也大大的提升了servlet應用程式的強度與擴充能力,透過Java的結合,servlet可以在網頁上完成幾乎傳統應用程式才能達到的功能。
標籤: | edit post
0 Responses