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 中保存和檢索的信息不能是基本數據類型(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