一、基本概念 1.1 Servlet Servlet是一種服務(wù)器端的Java應(yīng)用程序,,具有獨(dú)立于平臺(tái)和協(xié)議的特性,,可以生成動(dòng)態(tài)的Web頁(yè)面。它擔(dān)當(dāng)客戶(hù)請(qǐng)求(Web瀏覽器或其他HTTP客戶(hù)程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫(kù)或應(yīng)用程序)的中間層,。 Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,,與傳統(tǒng)的從命令行啟動(dòng)的Java應(yīng)用程序不同,Servlet由Web服務(wù)器進(jìn)行加載,,該Web服務(wù)器必須包含支持Servlet的Java虛擬機(jī),。
1.2 JSP JSP技術(shù)使用Java編程語(yǔ)言編寫(xiě)類(lèi)XML的tags和scriptlets,來(lái)封裝產(chǎn)生動(dòng)態(tài)網(wǎng)頁(yè)的處理邏輯,。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪(fǎng)問(wèn)存在于服務(wù)端的資源的應(yīng)用邏輯,。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)的顯示分離,支持可重用的基于組件的設(shè)計(jì),,使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易,。 JSP(JavaServer Pages)是一種動(dòng)態(tài)頁(yè)面技術(shù),它的主要目的是將表示邏輯從Servlet中分離出來(lái),。 JSP是一種腳本語(yǔ)言,,包裝了Java Servlet系統(tǒng)的界面,簡(jiǎn)化了Java和Servlet的使用難度,,同時(shí)通過(guò)擴(kuò)展JSP標(biāo)簽(TAG)提供了網(wǎng)頁(yè)動(dòng)態(tài)執(zhí)行的能力,。JSP提供了一套簡(jiǎn)單的標(biāo)簽,和HTML融合的比較好,,可以使不了解Servlet的人可以做出動(dòng)態(tài)網(wǎng)頁(yè)來(lái),。對(duì)于Java語(yǔ)言不熟悉的人,會(huì)覺(jué)得JSP開(kāi)發(fā)比較方便。JSP修改后可以立即看到結(jié)果,,不需要手工編譯,,JSP引擎會(huì)來(lái)做這些工作;而Servelt缺需要編譯,,重新啟動(dòng)Servlet引擎等一系列動(dòng)作,。但是在JSP中,HTML與程序代碼混雜在一起,,而Servlet卻不是這樣,。下面我們對(duì)JSP的運(yùn)行來(lái)做一個(gè)簡(jiǎn)單的介紹,告訴大家怎樣來(lái)執(zhí)行一個(gè)JSP文件:當(dāng)Web服務(wù)器(或Servlet引擎,應(yīng)用服務(wù)器)支持JSP引擎時(shí),JSP引擎會(huì)照著JSP的語(yǔ)法,,將JSP文件轉(zhuǎn)換成Servlet代碼源文件,,接著Servlet會(huì)被編譯成Java可執(zhí)行字節(jié)碼(bytecode),并以一般的Servlet方式載入執(zhí)行JSP語(yǔ)法簡(jiǎn)單,,可以方便的嵌入HTML之中,,很容易加入動(dòng)態(tài)的部分,方便的輸出HTML,。在Servlet中輸出HTML缺需要調(diào)用特定的方法,,對(duì)于引號(hào)之類(lèi)的字符也要做特殊的處理,加在復(fù)雜的HTML頁(yè)面中作為動(dòng)態(tài)部分,,比起JSP來(lái)說(shuō)是比較困難的,。
二、兩者之間的聯(lián)系和區(qū)別 【1】JSP第一次運(yùn)行的時(shí)候會(huì)編譯成Servlet,,駐留在內(nèi)存中以供調(diào)用,。 【2】JSP是web開(kāi)發(fā)技術(shù),Servlet是服務(wù)器端運(yùn)用的小程序,,我們?cè)L問(wèn)一個(gè)JSP頁(yè)面時(shí),,服務(wù)器會(huì)將這個(gè)JSP頁(yè)面轉(zhuǎn)變成Servlet小程序運(yùn)行得到結(jié)果后,反饋給用戶(hù)端的瀏覽器,。 【3】Servlet相當(dāng)于一個(gè)控制層再去調(diào)用相應(yīng)的JavaBean處理數(shù)據(jù),最后把結(jié)果返回給JSP,。 【4】Servlet主要用于轉(zhuǎn)向,將請(qǐng)求轉(zhuǎn)向到相應(yīng)的JSP頁(yè)面,。 【5】JSP更多的是進(jìn)行頁(yè)面顯示,,Servlet更多的是處理業(yè)務(wù),即JSP是頁(yè)面,,Servlet是實(shí)現(xiàn)JSP的方法。 【6】Servlet可以實(shí)現(xiàn)JSP的所有功能,,但由于美工使用Servlet做界面非常困難,,后來(lái)開(kāi)發(fā)了JSP。 【7】JSP技術(shù)開(kāi)發(fā)網(wǎng)站的兩種模式:JSP + JavaBean,;JSP + Servlet + JavaBean(一般在多層應(yīng)用中, JSP主要用作表現(xiàn)層,而Servlet則用作控制層,因?yàn)樵贘SP中放太多的代碼不利于維護(hù),,而把這留給Servlet來(lái)實(shí)現(xiàn),而大量的重復(fù)代碼寫(xiě)在JavaBean中)。 【8】二者之間的差別就是,,開(kāi)發(fā)界面是JSP直接可以編寫(xiě),。 比如在JSP中寫(xiě)Table標(biāo)記:; Servlet需要加入:out.println(“”),。 JSP文件在被應(yīng)用服務(wù)器(例如:Tomcat,、Resin、Weblogic和Websphere),調(diào)用過(guò)之后,就被編譯成為了Servlet文件,。也就是說(shuō)在網(wǎng)頁(yè)上顯示的其實(shí)是Servlet文件,。Tomcat下面JSP文件編譯之后生成的Servlet文件被放在了work文件夾下,JSP中的HTML代碼在Servlet都被out出來(lái),,而JSP代碼按照標(biāo)簽的不同會(huì)放在不同的位置,。 【9】JSP中嵌入JAVA代碼,而Servlet中嵌入HTML代碼,。 【10】在一個(gè)標(biāo)準(zhǔn)的MVC架構(gòu)中,,Servlet作為Controller接受用戶(hù)請(qǐng)求并轉(zhuǎn)發(fā)給相應(yīng)的Action處理,JSP作為View主要用來(lái)產(chǎn)生動(dòng)態(tài)頁(yè)面,,EJB作為Model實(shí)現(xiàn)你的業(yè)務(wù)代碼,。
|