【正文】
。其次,JSP是專門為Web開發(fā)而設(shè)計(jì)的,其目的是為了建立基于Web的應(yīng)用程序,包含了一整套的規(guī)范和工具。首先,在速度上,傳統(tǒng)的CGI程序需要使用系統(tǒng)的標(biāo)準(zhǔn)輸入輸出設(shè)備來實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè)的生成,而JSP是直接和服務(wù)器相關(guān)聯(lián)的。由于是JSP引擎自動(dòng)生成并編譯Servlet,不用程序員動(dòng)手編譯代碼,所以JSP能帶給你高效的性能和快速開發(fā)所需的靈活性。因?yàn)镾ervlet是編譯過的,所以網(wǎng)頁(yè)中的JSP代碼不需要在每次請(qǐng)求該頁(yè)時(shí)被解釋一遍。這些代碼塊被JSP引擎組織到用戶看不到的Java Servlet中去,然后Servlet自動(dòng)把它們編譯成Java字節(jié)碼。另外,更加復(fù)雜的請(qǐng)求模型可看作從被請(qǐng)求頁(yè)呼叫其他JSP頁(yè)或JavaServlets。JSP代碼控制著進(jìn)行邏輯處理時(shí)與JavaBeans組件的交互,并在動(dòng)態(tài)生成的、混合了靜態(tài)HTML代碼的HTML頁(yè)中顯示結(jié)果?,F(xiàn)在來看看JSP是如何處理HTTP請(qǐng)求的。非Java開發(fā)者可以通過JSP 的標(biāo)簽(Tags)來使用高級(jí)Java開發(fā)者創(chuàng)建的JavaBeans。它以JavaBeans和EnterpriseJavaBeans(EJB)組件包含商務(wù)和數(shù)據(jù)邏輯的模型為基礎(chǔ),提供大量標(biāo)簽和一個(gè)腳本平臺(tái)用來在HTML頁(yè)中顯示由JavaBeans產(chǎn)生或回送的內(nèi)容。這些技術(shù)使某領(lǐng)域內(nèi)的專家可以為本領(lǐng)域內(nèi)的垂直應(yīng)用編寫組件,而開發(fā)者可以直接拿來使用而不必掌握這一領(lǐng)域的專門技術(shù)。與此同時(shí),人們一直在尋找建立Web應(yīng)用程序的更好方法,組件在客戶機(jī)/服務(wù)器領(lǐng)域流行起來。HTML和圖形設(shè)計(jì)師把它們的設(shè)計(jì)的實(shí)施工作交給了Web編寫者,使他們不得不加倍工作——常常是手工編寫,因?yàn)闆]有合適的工具可以把服務(wù)器端腳本與HTML內(nèi)容結(jié)合起來。表達(dá)邏輯通常和商務(wù)及數(shù)據(jù)邏輯混在一起,這使得當(dāng)程序員試圖改變一個(gè)應(yīng)用程序的外觀而不想破壞與之緊密結(jié)合的商務(wù)邏輯時(shí),應(yīng)用程序的維護(hù)就像在蛋殼上走路一樣困難。然而,隨著時(shí)間的推移,人們認(rèn)識(shí)到這種方法不適于構(gòu)建大型的、可升級(jí)的Web應(yīng)用程序。SSJS和ASP都是在幾年前推出的,那時(shí)網(wǎng)絡(luò)還很年輕,沒有人知道除了把所有的商務(wù)、數(shù)據(jù)和表達(dá)邏輯統(tǒng)統(tǒng)堆進(jìn)原始網(wǎng)頁(yè)中之外還有什么更好的解決方法。按照J(rèn)SP規(guī)范書寫,和Java沒有任何關(guān)系的Scriptlet也是可以的,不過,由于JSP的強(qiáng)大功能主要在于能和JavaBeans、Enterprise JavaBeans一起工作,所以即使是Scriptlet部分不使用Java,編譯成的執(zhí)行代碼也應(yīng)該是與Java相關(guān)的。在JSP規(guī)范書中,并沒有明確要求JSP中的程序代碼部分(稱為Scriptlet)一定要用Java來寫。一般來說,在實(shí)際的JSP引擎中,JSP頁(yè)面在執(zhí)行時(shí)是編譯式,而不是解釋式的。JavaBeans類完成數(shù)據(jù)提供,這樣在模板中就沒有Java代碼,這意味著這些模板可以由一個(gè)HTML編寫人員來維護(hù)。作為一種基于文本的、以顯示為中心的開發(fā)技術(shù),JSP提供了Java Servlet的所有好處,并且,當(dāng)與一個(gè)JavaBeans類結(jié)合在一起時(shí),提供了一種使內(nèi)容和顯示邏輯分開的簡(jiǎn)單方式。C. JSP 的特點(diǎn)按照腳本語(yǔ)言是服務(wù)于某一個(gè)子系統(tǒng)的語(yǔ)言這種論述,JSP應(yīng)當(dāng)被看作是一種腳本語(yǔ)言。像SSJS一樣,它也允許你將靜態(tài)HTML 內(nèi)容與服務(wù)器端腳本混合起來生成動(dòng)態(tài)輸出。實(shí)際上,JSP不只采用了這種通用概念,它甚至使用許多和ASP相同的特殊標(biāo)簽。ColdFusion多年前就已經(jīng)這樣做了?!痹诖? Gosling的抱怨顯示出,他感到這個(gè)公司會(huì)從其他公司那里拿走技術(shù),?這次鞋子穿在了另一只腳上。隔幾個(gè)位置,是來自華盛頓一家大型軟件公司的高級(jí)經(jīng)理。為了解決Java Servlet的這種缺點(diǎn),SUN 推出了JSP。由于Java Servlet 內(nèi)部是以線程方式提供服務(wù),不必對(duì)于每個(gè)請(qǐng)求都啟動(dòng)一個(gè)進(jìn)程,并且利用多線程機(jī)制可以同時(shí)為多個(gè)請(qǐng)求服務(wù),因此Java Servlet效率非常高。許多Web 服務(wù)器都支持Servlet,即使不直接支持Servlet的Web 服務(wù)器也可以通過附加的應(yīng)用服務(wù)器和模塊來支持Servlet。Java Servlet是JSP技術(shù)的基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要JavaServlet和JSP配合才能完成,Servlet這個(gè)名稱源于Applet,現(xiàn)在國(guó)內(nèi)的翻譯方式很多,本書為了避免誤會(huì),決定直接采用Servlet而不做任何翻譯,讀者如果愿意,可以稱之為“小服務(wù)程序”。B. JSP的由來Sun公司的JSP技術(shù),使Web頁(yè)面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁(yè)面。針對(duì)項(xiàng)目中的某些請(qǐng)求,您可能會(huì)在MVC構(gòu)架下組合使用這兩項(xiàng)技術(shù)。在此,這個(gè)討論并不是讓您停止使用servlets,只使用JSP。對(duì)于大型的項(xiàng)目,這種劃分極為重要。Java程序員可以致力于動(dòng)態(tài)代碼。即使對(duì)那些對(duì)JSP一無所知的HTML工具,我們也可以使用,因?yàn)樗鼈儠?huì)忽略JSP標(biāo)簽JSP tags。JSP中可以使用常規(guī)的HTML:沒有額外的反斜杠,沒有額外的雙引號(hào),也沒有暗含的Java語(yǔ)法。畢竟,在特定平臺(tái)上能夠用Java編程語(yǔ)言完成的事情,同樣可以用匯編語(yǔ)言來完成,但是選擇哪種語(yǔ)言依舊十分重要。然而,這種底層的等同性并不意味著servler和JSP頁(yè)面對(duì)于所有的情況都等同適用。JSP 頁(yè)面最終會(huì)轉(zhuǎn)換成servler。兩者都提供在HTML 代碼中混合某種程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。A. 概述JSP(Java Server Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)標(biāo)準(zhǔn),其在動(dòng)態(tài)網(wǎng)頁(yè)的建設(shè)中有其強(qiáng)大而特別的功能。按照Sun 的說法,JSP 能夠適應(yīng)市場(chǎng)上包括Apache WebServer、%的服務(wù)器產(chǎn)品。在Sun 正式發(fā)布JSP(Java Server Pages)之后,這種新的Web 應(yīng)用開發(fā)技術(shù)很快引起了人們的關(guān)注。JSP比SSJS和ASP具有更好的可擴(kuò)展性,并且它不專屬于任何一家廠商或某一特定的Web服務(wù)器。s machine/server the realm. JavaBeans and ActiveX were published the pany to expand to apply the procedure developer for Java and Windows to use to e to develop the plicated procedure quickly by the fast application procedure development( RAD) tool. These techniques make the expert in the some realm be able to write the module for the perpendicular application plait in the skill area, but the developer can go fetch the usage directly butneed not control the expertise of this realm.Be a kind of take module as the central development terrace, the JSP appeared. It with the JavaBeans and Enterprise JavaBeans(EJB) module includes the model of the business and the data logic for foundation, provide a great deal of label and a script terraces to use to e to show in the HTML page from the contents of JavaBeans creation or send a presentin return. Because of the property that regards the module as the center of the JSP, it can drive Java and not the developer of Java uses equally. Not the developer of Java can pass the JSP label( Tags) to use the JavaBeans that the deluxe developer of Java establish. The developer of Java not only can establish and use the JavaBeans, but also can use the language of Java to e to control more accurately in the JSP page according to the expression logic of the first floor JavaBeans.See now how JSP is handle claim of HTTP. In basic claim model, a claim directly was send to JSP page in. The code of JSP controls to carry on hour of the logic processing and module of JavaBeanses39。t satisfy current the large electronic merce needs appliedly, traditional development techniques are all at to edit and translate the executive way change, such as the ASP → ASP+。t do any translation, if reader would like to, can call it as small service procedure. The Servlet is