ASP與JSP的比較
從微軟推出了ASP(ActiveServerPage)後,它以其強大的功能,簡單易學的特點而受到廣大WEB開發人員的喜歡。但是它卻有微軟產品的通病,只能在Windows平台下使用,雖然它可以通過增加控制項而在LINUX下使用,但是其功能最強大的DCOM控制項卻不能使用。而SUN公司在JAVA的基礎下開發出的JSP(Java
ServerPages)實現了動態網頁面與靜態頁面的分離,脫離了硬體平台的束縛,以及編譯後運行等方式大大提高了其執行效率而逐漸成為網際網路上的主流開發工具。為了使用廣大應用ASP的程式員們能近快的學會JSP。現把其異同對比如下:
一、結構
JSP和ASP在結構上類似,都是以“”作為標計符,不同的是在標計符之間的代碼ASP為JavaScript或VBScript指令碼,而JSP為JAVA代碼。JSP將網頁的表現形式和伺服器端的代碼邏輯分開。作為伺服器處理序的JSP頁面,首先被轉換成servlet(一種伺服器端啟動並執行java程式)。Servlet支援HTTP協議的請求和響應。當JSP被轉換成純JAVA代碼。多個使用者同時請求一個jsp頁面時,應用執行個體化線程來響應請求。這些線程由WEB伺服器處理序來管理,和ASP的線程管理器功能類似。同CGI為每個請求建立一個進程的模式比較,這種方式效率高的多。
二、效能和平台無關性
與C++、VB等語言比較,JAVA被看作是個效率不太高的語言,但它以犧牲效率換來了平台無關性使JAVA可以在大多數作業系統上運行而不需要重新編譯--許多人願意為此而付出代價。JAVA的編譯代碼是一種位元組代碼,在運行時由作業系統上的一個Java
VirtualMachine(JVM)虛擬機器解釋。位元組代碼可以在所有平台上遷移,而不需要任何改動。交叉平台編程傾向於採用所有作業系統的“最小公分母“,尤其是使用圖形化介面時(servlets不需要任何圖形介面)。Servlets比傳統的java程式(applets,
javaapp)要快,因為它們在伺服器端運行,不需要載入沉重的GUI(HTML的GUI是非常少的)。另外,servlets的位元組代碼只有在客戶請求時才執行,所以儘管當首次調用servlets時會有幾秒鐘的載入時間,但後續的請求相應非常迅速,因為伺服器已經緩衝了啟動並執行servlets。當前的jsp伺服器,都帶有java
即時編譯器(JIT),因此,JSP的執行比每次都要解釋執行的ASP代碼要快,尤其是在代碼中存在迴圈操作時,JSP的速度要快1到2個數量級。
三、Session管理
為了跟蹤使用者的操作狀態,ASP應用SESSION對象。JSP使用一個叫HttpSession的對象實現同樣的功能。Session的資訊儲存在伺服器端,Session的id儲存在客戶機的cookie中。如果客戶機禁止cookie,Session
Id就必須帶在url後面。Session一般在伺服器上設定了一個30分鐘的到期時間,當客戶停止活動後自動失效。Session
中儲存和檢索的資訊不能是基礎資料型別 (Elementary Data Type)(primitivedatatypes)如(int,
double)等,而必須是java的相應的object(對象)如(Integer,Double)。
HttpSessionsession=request.getSession();//得到一個session對象或建立一個
session.getId()//得到sessionID數
Integerid=(Integer)session.getValue(“id“)//檢索出session的值並轉化為整型
session.putValue(“ItemValue“,itemName);//ItemValue必須不是must簡單類型
四、Application管理
有時伺服器需要管理面向整個應用的參數,使得每個客戶都能獲得同樣的參數值。和Session一樣,ASP使用Application對象而JSP使用ServletContext對象,操作的方法和Session一樣。
getServletContext().setAttribute(“Item“,ItemValue);//設定一個應用變數
Integeri=(Integer)getServletContext().getAttribute(“ItemName“);//得到//item