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)計(jì)符,不同的是在標(biāo)計(jì)符之間的代碼ASP為JavaScript或VBScript腳本,而JSP為JAVA代碼。JSP將網(wǎng)頁(yè)的表現(xiàn)形式和服務(wù)器端的代碼邏輯分開(kāi)。作為服務(wù)器進(jìn)程的JSP頁(yè)面,首先被轉(zhuǎn)換成servlet(一種服務(wù)器端運(yùn)行的java程序)。Servlet支持HTTP協(xié)議的請(qǐng)求和響應(yīng)。當(dāng)JSP被轉(zhuǎn)換成純JAVA代碼。多個(gè)用戶同時(shí)請(qǐng)求一個(gè)jsp頁(yè)面時(shí),應(yīng)用實(shí)例化線程來(lái)響應(yīng)請(qǐng)求。這些線程由WEB服務(wù)器進(jìn)程來(lái)管理,和ASP的線程管理器功能類似。同CGI為每個(gè)請(qǐng)求創(chuàng)建一個(gè)進(jìn)程的模式比較,這種方式效率高的多。
asp與jsp的區(qū)別二:性能和平臺(tái)無(wú)關(guān)性
與C++、VB等語(yǔ)言比較,JAVA被看作是個(gè)效率不太高的語(yǔ)言,但它以犧牲效率換來(lái)了平臺(tái)無(wú)關(guān)性使JAVA可以在大多數(shù)操作系統(tǒng)上運(yùn)行而不需要重新編譯--許多人愿意為此而付出代價(jià)。JAVA的編譯代碼是一種字節(jié)代碼,在運(yùn)行時(shí)由操作系統(tǒng)上的一個(gè)Java VirtualMachine(JVM)虛擬機(jī)解釋。字節(jié)代碼可以在所有平臺(tái)上遷移,而不需要任何改動(dòng)。交叉平臺(tái)編程傾向于采用所有操作系統(tǒng)的“最小公分母“,尤其是使用圖形化界面時(shí)(servlets不需要任何圖形界面)。Servlets比傳統(tǒng)的java程序(applets, javaapp)要快,因?yàn)樗鼈冊(cè)诜?wù)器端運(yùn)行,不需要加載沉重的GUI(HTML的GUI是非常少的)。另外,servlets的字節(jié)代碼只有在客戶請(qǐng)求時(shí)才執(zhí)行,所以盡管當(dāng)首次調(diào)用servlets時(shí)會(huì)有幾秒鐘的加載時(shí)間,但后續(xù)的請(qǐng)求相應(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個(gè)數(shù)量級(jí)。
asp與jsp的區(qū)別三:Session管理
為了跟蹤用戶的操作狀態(tài),ASP應(yīng)用SESSION對(duì)象。JSP使用一個(gè)叫HttpSession的對(duì)象實(shí)現(xiàn)同樣的功能。Session的信息保存在服務(wù)器端,Session的id保存在客戶機(jī)的cookie中。如果客戶機(jī)禁止cookie,Session Id就必須帶在url后面。Session一般在服務(wù)器上設(shè)置了一個(gè)30分鐘的過(guò)期時(shí)間,當(dāng)客戶停止活動(dòng)后自動(dòng)失效。Session 中保存和檢索的信息不能是基本數(shù)據(jù)類型(primitivedatatypes)如(int, double)等,而必須是java的相應(yīng)的object(對(duì)象)如(Integer,Double)。 HttpSessionsession=request.getSession();//得到一個(gè)session對(duì)象或創(chuàng)建一個(gè) session.getId()//得到sessionID數(shù) Integerid=(Integer)session.getValue(“id“)//檢索出session的值并轉(zhuǎn)化為整型 session.putValue(“ItemValue“,itemName);//ItemValue必須不是must簡(jiǎn)單類型
asp與jsp的區(qū)別四:Application管理
有時(shí)服務(wù)器需要管理面向整個(gè)應(yīng)用的參數(shù),使得每個(gè)客戶都能獲得同樣的參數(shù)值。和Session一樣,ASP使用Application對(duì)象而JSP使用ServletContext對(duì)象,操作的方法和Session一樣。 getServletContext().setAttribute(“Item“,ItemValue);//設(shè)置一個(gè)應(yīng)用變量 Integeri=(Integer)getServletContext().getAttribute(“ItemName“);//得到//item
asp與jsp的區(qū)別五:ServerSideIncludes
在服務(wù)器端引用上ASP和JSP有著相同之處。ASP和JSP都可以支持此功能的服務(wù)器(IIS,APACHE)上實(shí)現(xiàn)服務(wù)器端包含虛文件。但JSP是將動(dòng)態(tài)頁(yè)面的結(jié)果包含進(jìn)來(lái),而不是包含文件的代碼本身。當(dāng)你包含的文件在另一個(gè)服務(wù)器上時(shí),不包含任何代碼和對(duì)象是一個(gè)非常有效的功能。
asp與jsp的區(qū)別六:JAVA組件:JavaBeans
JavaBeans是一些完成預(yù)定義功能的封裝的對(duì)象數(shù)據(jù)。JavaBeans和JSP接合與COM和ASP相比如下:
COM對(duì)象常用來(lái)封裝商業(yè)邏輯和為ASP頁(yè)面完成高強(qiáng)度計(jì)算。重用的組件使得頁(yè)面簡(jiǎn)單快速,因?yàn)榻M件由編譯語(yǔ)言(C++,VB)構(gòu)成,而不是解釋型的scripting語(yǔ)言(VBScript, JScript)。
JavaBeans只能用java語(yǔ)言開(kāi)發(fā),com可以由符合標(biāo)準(zhǔn)對(duì)象模型的任何語(yǔ)言開(kāi)發(fā)(包括Visual J++)。另一方面,JavaBeans更容易開(kāi)發(fā),因?yàn)橐坏┱莆樟薺ava,了解JavaBeans的結(jié)構(gòu)非常容易。由于com的復(fù)雜性,需要大量的學(xué)習(xí)和培訓(xùn)才能掌握--即使你具有c++和vb的基礎(chǔ)也需要額外的努力。Com 組件需要在服務(wù)器上注冊(cè),如果你修改了一個(gè)現(xiàn)有的組件,服務(wù)器需要重新啟動(dòng)才能使用它。JavaBeans不需要重新注冊(cè),如果開(kāi)發(fā)者不需要得到對(duì)服務(wù)器的完全訪問(wèn)權(quán)限,這是其一個(gè)巨大的優(yōu)點(diǎn)。 可以創(chuàng)建滿足商業(yè)邏輯的完整的JavaBeans庫(kù),讓非編程人員使用庫(kù)來(lái)開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站。 Beans可以在服務(wù)器端管理數(shù)據(jù)庫(kù)連接。
JavaBeans符合結(jié)構(gòu)化對(duì)象模型:每個(gè)Bean由一個(gè)不帶參數(shù)的構(gòu)造函數(shù),控制它的servlet可以使用內(nèi)省(introspection)來(lái)設(shè)置其屬性。要設(shè)置Bean的內(nèi)置屬性,必須使用帶有屬性名的setProperty標(biāo)簽。如果一個(gè)屬性可以設(shè)置,Bean需要有一個(gè)setXxxx方法,Xxxx用實(shí)際的屬性名來(lái)代替。
asp與jsp的區(qū)別七:JSP和數(shù)據(jù)庫(kù)
ASP使用ODBC通過(guò)ADO連接數(shù)據(jù)庫(kù),而JAVA通過(guò)一個(gè)叫JDBC的技術(shù)聯(lián)接數(shù)據(jù)庫(kù)。目標(biāo)數(shù)據(jù)庫(kù)需要一個(gè)JDBC驅(qū)動(dòng)程序--一個(gè)數(shù)據(jù)庫(kù)與JAVA的接口,使得JAVA可以用標(biāo)準(zhǔn)的方式訪問(wèn)數(shù)據(jù)庫(kù)。JDBC不使用服務(wù)器端的數(shù)據(jù)源。只要有JDBC驅(qū)動(dòng)程序,JAVA就可以訪問(wèn)數(shù)據(jù)庫(kù)了。如果一個(gè)特定的數(shù)據(jù)庫(kù)沒(méi)有JDBC驅(qū)動(dòng)程序,而只有ODBC驅(qū)動(dòng)程序,JAVA提供一個(gè)JDBC-ODBC橋來(lái)將JDBC調(diào)用轉(zhuǎn)化為ODBC調(diào)用。所有的JAVA編譯器都帶有一個(gè)免費(fèi)的JDBC-ODBC橋。理論上,橋可以訪問(wèn)任何常見(jiàn)的數(shù)據(jù)庫(kù)產(chǎn)品。
結(jié)論:JSP模型是在ASP之后定義的,它借用了ASP的許多優(yōu)點(diǎn),如Session,Application等對(duì)象。同時(shí)JSP使用靈活而強(qiáng)大的JAVA語(yǔ)言,而不是低效的Scripting語(yǔ)言。ASP開(kāi)發(fā)者只能使用基于windows平臺(tái)的技術(shù),而java和jsp是跨平臺(tái)的。