第一個對用戶實現動態文本的機制是通用網關接口(CGI)。這給予可執行應用(通常由PERL或C語言編寫,但並不必須如此)一個接口以使客戶端在HTTP標準些接入。
CGI項目的URL看上如想這個虛擬的URL一樣:
http://www.myserver/cgi-bin/MyExecutable?name=halberd%pass=halberd
URL的第一部分是系一名(在這個例子中時HTTP),接着是服務器名,在這與問好之間的是文件路徑。
URL中的/cgi-bin/部分提醒服務器應該執行URL下面指定的CGI項目,在這個例子中時MyExecutable,在問號後面的部分被稱爲查詢字符串,踏實的客戶端可以向CGI項目發送消息。
CGI的幾個缺點:
每一個引入的CGI請求都需要新建一個操作系統進程
其後這個進程會加載和運行一個CGI程序
爲了支持網絡協議和請求解碼,必須進行單調枯燥地反覆編程
這個時候Tomcat的出現,Servlet:java的服務器端在某些方面克服了這些,Servlet是具有明顯形式的一部分邏輯,用java表示,他引用了動態產生文本或執行一些操作。
Servlet的主要優點:
爲每一個請求新建一個操作系統進程的開銷取消了,一個java虛擬機保持運行狀態,並處理所有的請求。
JVM加載java類時以處理引入的請求,如果同一個處理唄一個以上的請求提出,已被加載的類就可以用處理它,對於第一個請求以外的所有請求,這都減少了類的加載的開銷。
在靜態協議例如HTTP上進行狀態管理的問題得以解決
解決聯網協議和對引入請求解碼的代碼可以被所有進行處理的java類分享