asp與jsp的區(qū)別
JSP與ASP的區(qū)別讓很多初學(xué)者都非常茫然,在此介紹一下。下面是學(xué)習(xí)啦小編為大家準(zhǔn)備的asp與jsp的區(qū)別,希望大家喜歡!
asp與jsp的區(qū)別一:結(jié)構(gòu)
JSP和ASP在結(jié)構(gòu)上類似,都是以“”作為標(biāo)計符,不同的是在標(biāo)計符之間的代碼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)建一個進程的模式比較,這種方式效率高的多。
asp與jsp的區(qū)別二:性能和平臺無關(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ù)量級。
asp與jsp的區(qū)別三: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簡單類型
asp與jsp的區(qū)別四: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
asp與jsp的區(qū)別五:ServerSideIncludes
在服務(wù)器端引用上ASP和JSP有著相同之處。ASP和JSP都可以支持此功能的服務(wù)器(IIS,APACHE)上實現(xiàn)服務(wù)器端包含虛文件。但JSP是將動態(tài)頁面的結(jié)果包含進來,而不是包含文件的代碼本身。當(dāng)你包含的文件在另一個服務(wù)器上時,不包含任何代碼和對象是一個非常有效的功能。
asp與jsp的區(qū)別六:JAVA組件:JavaBeans
JavaBeans是一些完成預(yù)定義功能的封裝的對象數(shù)據(jù)。JavaBeans和JSP接合與COM和ASP相比如下:
COM對象常用來封裝商業(yè)邏輯和為ASP頁面完成高強度計算。重用的組件使得頁面簡單快速,因為組件由編譯語言(C++,VB)構(gòu)成,而不是解釋型的scripting語言(VBScript, JScript)。
JavaBeans只能用java語言開發(fā),com可以由符合標(biāo)準(zhǔn)對象模型的任何語言開發(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)省(introspection)來設(shè)置其屬性。要設(shè)置Bean的內(nèi)置屬性,必須使用帶有屬性名的setProperty標(biāo)簽。如果一個屬性可以設(shè)置,Bean需要有一個setXxxx方法,Xxxx用實際的屬性名來代替。
asp與jsp的區(qū)別七:JSP和數(shù)據(jù)庫
ASP使用ODBC通過ADO連接數(shù)據(jù)庫,而JAVA通過一個叫JDBC的技術(shù)聯(lián)接數(shù)據(jù)庫。目標(biāo)數(shù)據(jù)庫需要一個JDBC驅(qū)動程序--一個數(shù)據(jù)庫與JAVA的接口,使得JAVA可以用標(biāo)準(zhǔn)的方式訪問數(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是跨平臺的。