明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

ASP與JSP的比較

[摘要]從微軟推出了ASP(ActiveServerPage)后,它以其強大的功能,簡單易學(xué)的特點而受到廣大WEB開發(fā)人員的喜歡。但是它卻有微軟產(chǎn)品的通病,只能在Windows平臺下使用,雖然它可以通過增加控件而在LINUX下使用,但是其功能最強大的DCOM控件卻不能使用。而SUN公司在JAVA的基礎(chǔ)下開...

從微軟推出了ASP(ActiveServerPage)后,它以其強大的功能,簡單易學(xué)的特點而受到廣大WEB開發(fā)人員的喜歡。但是它卻有微軟產(chǎn)品的通病,只能在Windows平臺下使用,雖然它可以通過增加控件而在LINUX下使用,但是其功能最強大的DCOM控件卻不能使用。而SUN公司在JAVA的基礎(chǔ)下開發(fā)出的JSP(Java ServerPages)實現(xiàn)了動態(tài)頁面與靜態(tài)頁面的分離,脫離了硬件平臺的束縛,以及編譯后運行等方式大大提高了其執(zhí)行效率而逐漸成為因特網(wǎng)上的主流開發(fā)工具。為了使用廣大應(yīng)用ASP的程序員們能近快的學(xué)會JSP,F(xiàn)把其異同對比如下:

一、結(jié)構(gòu)
JSP和ASP在結(jié)構(gòu)上類似,都是以““作為標計符,不同的是在標計符之間的代碼ASP為JavaScript或VBScript腳本,而JSP為JAVA代碼。JSP將網(wǎng)頁的表現(xiàn)形式和服務(wù)器端的代碼邏輯分開。作為服務(wù)器進程的JSP頁面,首先被轉(zhuǎn)換成servlet(一種服務(wù)器端運行的java程序)。Servlet支持HTTP協(xié)議的請求和響應(yīng)。當(dāng)JSP被轉(zhuǎn)換成純JAVA代碼。多個用戶同時請求一個jsp頁面時,應(yīng)用實例化線程來響應(yīng)請求。這些線程由WEB服務(wù)器進程來管理,和ASP的線程管理器功能類似。同CGI為每個請求創(chuàng)建一個進程的模式比較,這種方式效率高的多。

二、性能和平臺無關(guān)性
與C++、VB等語言比較,JAVA被看作是個效率不太高的語言,但它以犧牲效率換來了平臺無關(guān)性使JAVA可以在大多數(shù)操作系統(tǒng)上運行而不需要重新編譯--許多人愿意為此而付出代價。JAVA的編譯代碼是一種字節(jié)代碼,在運行時由操作系統(tǒng)上的一個Java VirtualMachine(JVM)虛擬機解釋。字節(jié)代碼可以在所有平臺上遷移,而不需要任何改動。交叉平臺編程傾向于采用所有操作系統(tǒng)的“最小公分母“,尤其是使用圖形化界面時(servlets不需要任何圖形界面)。Servlets比傳統(tǒng)的java程序(applets, javaapp)要快,因為它們在服務(wù)器端運行,不需要加載沉重的GUI(HTML的GUI是非常少的)。另外,servlets的字節(jié)代碼只有在客戶請求時才執(zhí)行,所以盡管當(dāng)首次調(diào)用servlets時會有幾秒鐘的加載時間,但后續(xù)的請求相應(yīng)非常迅速,因為服務(wù)器已經(jīng)緩存了運行的servlets。當(dāng)前的jsp服務(wù)器,都帶有java 即時編譯器(JIT),因此,JSP的執(zhí)行比每次都要解釋執(zhí)行的ASP代碼要快,尤其是在代碼中存在循環(huán)操作時,JSP的速度要快1到2個數(shù)量級。

三、Session管理
為了跟蹤用戶的操作狀態(tài),ASP應(yīng)用SESSION對象。JSP使用一個叫HttpSession的對象實現(xiàn)同樣的功能。Session的信息保存在服務(wù)器端,Session的id保存在客戶機的cookie中。如果客戶機禁止cookie,Session Id就必須帶在url后面。Session一般在服務(wù)器上設(shè)置了一個30分鐘的過期時間,當(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管理
有時服務(wù)器需要管理面向整個應(yīng)用的參數(shù),使得每個客戶都能獲得同樣的參數(shù)值。和Session一樣,ASP使用Application對象而JSP使用ServletContext對象,操作的方法和Session一樣。
getServletContext().setAttribute(“Item“,ItemValue);//設(shè)置一個應(yīng)用變量
Integeri=(Integer)getServletContext().getAttribute(“ItemName“);//得到//item

五、ServerSideIncludes
在服務(wù)器端引用上ASP和JSP有著相同之處。ASP和JSP都可以支持此功能的服務(wù)器(IIS,APACHE)上實現(xiàn)服務(wù)器端包含虛文件。但JSP是將動態(tài)頁面的結(jié)果包含進來,而不是包含文件的代碼本身。當(dāng)你包含的文件在另一個服務(wù)器上時,不包含任何代碼和對象是一個非常有效的功能。

ASP:
JSP:<%@includefile=“subfile.jsp“-->


六、JAVA組件:JavaBeans
JavaBeans是一些完成預(yù)定義功能的封裝的對象數(shù)據(jù)。JavaBeans和JSP接合與COM和ASP相比如下:

COM對象常用來封裝商業(yè)邏輯和為ASP頁面完成高強度計算。重用的組件使得頁面簡單快速,因為組件由編譯語言(C++,VB)構(gòu)成,而不是解釋型的scripting語言(VBScript, Jscript)。
JavaBeans只能用java語言開發(fā),com可以由符合標準對象模型的任何語言開發(fā)(包括Visual J++)。另一方面,JavaBeans更容易開發(fā),因為一旦掌握了java,了解JavaBeans的結(jié)構(gòu)非常容易。由于com的復(fù)雜性,需要大量的學(xué)習(xí)和培訓(xùn)才能掌握--即使你具有c++和vb的基礎(chǔ)也需要額外的努力。Com 組件需要在服務(wù)器上注冊,如果你修改了一個現(xiàn)有的組件,服務(wù)器需要重新啟動才能使用它。JavaBeans不需要重新注冊,如果開發(fā)者不需要得到對服務(wù)器的完全訪問權(quán)限,這是其一個巨大的優(yōu)點。
可以創(chuàng)建滿足商業(yè)邏輯的完整的JavaBeans庫,讓非編程人員使用庫來開發(fā)動態(tài)網(wǎng)站。
Beans可以在服務(wù)器端管理數(shù)據(jù)庫連接。
JavaBeans符合結(jié)構(gòu)化對象模型:每個Bean由一個不帶參數(shù)的構(gòu)造函數(shù),控制它的servlet可以使用內(nèi)。╥ntrospection)來設(shè)置其屬性。要設(shè)置Bean的內(nèi)置屬性,必須使用帶有屬性名的setProperty標簽。如果一個屬性可以設(shè)置,Bean需要有一個setXxxx方法,Xxxx用實際的屬性名來代替。
七、JSP和數(shù)據(jù)庫
ASP使用ODBC通過ADO連接數(shù)據(jù)庫,而JAVA通過一個叫JDBC的技術(shù)聯(lián)接數(shù)據(jù)庫。目標數(shù)據(jù)庫需要一個JDBC驅(qū)動程序--一個數(shù)據(jù)庫與JAVA的借口,使得JAVA可以用標準的方式訪問數(shù)據(jù)庫。JDBC不使用服務(wù)器端的數(shù)據(jù)源。只要有JDBC驅(qū)動程序,JAVA就可以訪問數(shù)據(jù)庫了。如果一個特定的數(shù)據(jù)庫沒有JDBC驅(qū)動程序,而只有ODBC驅(qū)動程序,JAVA提供一個JDBC-ODBC橋來將JDBC調(diào)用轉(zhuǎn)化為ODBC調(diào)用。所有的JAVA編譯器都帶有一個免費的JDBC-ODBC橋。理論上,橋可以訪問任何常見的數(shù)據(jù)庫產(chǎn)品。

結(jié)論:

JSP模型是在ASP之后定義的,它借用了ASP的許多優(yōu)點,如Session,Application等對象。同時JSP使用靈活而強大的JAVA語言,而不是低效的Scripting語言。ASP開發(fā)者只能使用基于windows平臺的技術(shù),而java和jsp是跨平臺的。