名詞理解
1.API( Application Programming Interface)
API 是用於構建應用程式軟體的一組子程式定義,協議和工具。一般來說,這是一套明確定義的各種軟體元件之間的通訊方法。
2. CGI(Common Gateway Interface)通用閘道器介面
通用閘道器介面,簡稱CGI,是一種根據請求資訊動態產生迴應內容的技術。通過CGI,Web 伺服器可以將根據請求不同啟動不同的外部程式,並將請求內容轉發給該程式,在程式執行結束後,將執行結果作為迴應返回給客戶端。也就是說,對於每個請求,都要產生一個新的程序進行處理。因為每個程序都會佔有很多伺服器的資源和時間,這就導致伺服器無法同時處理很多的併發請求。另外CGI程式都是與作業系統平臺相關的,雖然在網際網路爆發的初期,CGI為開發網際網路應用做出了很大的貢獻,但是隨著技術的發展,開始逐漸衰落。
3.Servlet
Servlet最初是在1995年由James Gosling 提出的,因為使用該技術需要複雜的Web伺服器支援,所以當時並沒有得到重視,也就放棄了。後來隨著Web應用複雜度的提升,並要求提供更高的併發處理能力,Servlet被重新撿起,並在Java平臺上得到實現,現在提起Servlet,指的都是Java Servlet。Java Servlet要求必須執行在Web伺服器當中,與Web伺服器之間屬於分工和互補關係。確切的說,在實際執行的時候Java Servlet與Web伺服器會融為一體,如同一個程式一樣執行在同一個Java虛擬機器(JVM)當中。與CGI不同的是,Servlet對每個請求都是單獨啟動一個執行緒,而不是程序。這種處理方式大幅度地降低了系統裡的程序數量,提高了系統的併發處理能力。另外因為Java Servlet是執行在虛擬機器之上的,也就解決了跨平臺問題。如果沒有Servlet的出現,也就沒有網際網路的今天。
在Servlet出現之後,隨著使用範圍的擴大,人們發現了它的一個很大的一個弊端。那就是為了能夠輸出HTML格式內容,需要編寫大量重複程式碼,造成不必要的重複勞動。為了解決這個問題,基於Servlet技術產生了JavaServet Pages技術,也就是JSP。Servlet和JSP兩者分工協作,Servlet側重於解決運算和業務邏輯問題,JSP則側重於解決展示問題。Servlet與JSP一起為Web應用開發帶來了巨大的貢獻,後來出現的眾多Java Web應用開發框架都是基於這兩種技術的,更確切的說,都是基於Servlet技術的。
--------------------分割線-------------------------
而CGI對每個請求都產生新的程序,服務完成後就銷燬,所以效率上低於Servlet 。