從微軟推出了ASP(ActiveServerPage)后,它以其強大的功能,簡單易學的特點而受到廣大WEB開發(fā)人員的喜歡。但是它卻有微軟產品的通病,只能在Windows平臺下使用,雖然它可以通過增加控件而在LINUX下使用,但是其功能最強大的DCOM控件卻不能使用。而SUN公司在Java的基礎下開發(fā)出的JSP(Java ServerPages)實現(xiàn)了動態(tài)頁面與靜態(tài)頁面的分離,脫離了硬件平臺的束縛,以及編譯后運行等方式大大提高了其執(zhí)行效率而逐漸成為因特網上的主流開發(fā)工具。為了使用廣大應用ASP的程序員們能近快的學會JSP。現(xiàn)把其異同對比如下:
一、結構
JSP和ASP在結構上類似,都是以"<%"和"%>"作為標計符,不同的是在標計符之間的代碼ASP為JavaScript或VBScript腳本,而JSP為Java代碼。JSP將網頁的表現(xiàn)形式和服務器端的代碼邏輯分開。作為服務器進程的JSP頁面,首先被轉換成servlet(一種服務器端運行的Java程序)。
Servlet支持HTTP協(xié)議的請求和響應。當JSP被轉換成純Java代碼。多個用戶同時請求一個JSP頁面時,應用實例化線程來響應請求。這些線程由WEB服務器進程來管理,和ASP的線程管理器功能類似。同CGI為每個請求創(chuàng)建一個進程的模式比較,這種方式效率高的多。
二、性能和平臺無關性
與C++、VB等語言比較,Java被看作是個效率不太高的語言,但它以犧牲效率換來了平臺無關性使Java可以在大多數(shù)操作系統(tǒng)上運行而不需要重新編譯--許多人愿意為此而付出代價。Java的編譯代碼是一種字節(jié)代碼,在運行時由操作系統(tǒng)上的一個Java VirtualMachine(JVM)虛擬機解釋。
字節(jié)代碼可以在所有平臺上遷移,而不需要任何改動。交叉平臺編程傾向于采用所有操作系統(tǒng)的"最小公分母",尤其是使用圖形化界面時(servlets不需要任何圖形界面)。
Servlets比傳統(tǒng)的Java程序(applets, Javaapp)要快,因為它們在服務器端運行,不需要加載沉重的GUI(HTML的GUI是非常少的)。另外,servlets的字節(jié)代碼只有在客戶請求時才執(zhí)行,所以盡管當首次調用servlets時會有幾秒鐘的加載時間,但后續(xù)的請求相應非常迅速,因為服務器已經緩存了運行的servlets。
當前的JSP服務器,都帶有Java 即時編譯器(JIT),因此,JSP的執(zhí)行比每次都要解釋執(zhí)行的ASP代碼要快,尤其是在代碼中存在循環(huán)操作時,JSP的速度要快1到2個數(shù)量級。
三、Session管理
為了跟蹤用戶的操作狀態(tài),ASP應用SESSION對象。JSP使用一個叫HttpSession的對象實現(xiàn)同樣的功能。Session的信息保存在服務器端,Session的id保存在客戶機的cookie中。如果客戶機禁止cookie,Session Id必須帶在url后面。
Session一般在服務器上設置了一個30分鐘的過期時間,當客戶停止活動后自動失效。Session 中保存和檢索的信息不能是基本數(shù)據(jù)類型(primitivedatatypes)如(int, double)等,而必須是Java的相應的object(對象)如(Integer,Double)。