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