【正文】
11 。其次, JSP 是專門為 Web 開發(fā)而設(shè)計的,其目的是為了建立基于 Web 的應(yīng)用程序,其中包含了一整套的規(guī)范和工具。首先,在速度上,傳統(tǒng)的 CGI 程序需要使用系統(tǒng)的標 準輸入輸出設(shè)備來實現(xiàn)動態(tài)網(wǎng)頁的生成,而 JSP是直接和服務(wù)器相關(guān)聯(lián)的。由于是 JSP 引擎自動生成并編譯 Servlet,不用程序員動手編譯代碼,所以 JSP 能帶給你高效的性能和快速開發(fā)所需的靈活性。因為 Servlet 是編譯過的,所以網(wǎng)頁中的 JSP 代碼不需要在每次請求該頁時被解釋一遍。這些代碼塊被 JSP 引擎組織到用戶看不到的 Java Servlet 中去,然后 Servlet 自動把它們編譯成 Java 字節(jié)碼。另外,更加復(fù)雜的請求模型可看作從被請求頁呼叫其他 JSP 頁或 Java Servlets。 JSP 代碼控 制著進行邏輯處理時與 JavaBeans 組件的交互,并在動態(tài)生成的、混合了靜態(tài) HTML 代碼的 HTML 頁中顯示結(jié)果。 現(xiàn)在來看看 JSP 是如何處理 HTTP 請求的。非 Java 開發(fā)者可以通過 JSP 的標簽 (Tags)來使用高級 Java 開發(fā)者創(chuàng)建的 JavaBeans。它以 JavaBeans 和 Enterprise JavaBeans(EJB)組件包含商務(wù)和數(shù)據(jù)邏輯的模 型為基礎(chǔ),提供大量標簽和一個腳本平臺用來在 HTML 頁中顯示由 JavaBeans 產(chǎn)生或回送的內(nèi)容。這些技術(shù)使某領(lǐng)域內(nèi)的專家可以為本領(lǐng)域內(nèi)的垂直應(yīng)用編寫組件,而開發(fā)者可以直接拿來使用而不必掌握這一領(lǐng)域的專門技術(shù)。 與此同時,人們一直在尋找建立 Web 應(yīng)用程序的更好方法,組件在客戶機 /服務(wù)器領(lǐng)域流行起來。 HTML 和圖形設(shè)計師把它們的設(shè)計的實施工作交給了 Web 編寫者,使他們不得不加倍工作 —— 常常是手工編寫,因為沒有合適的工具可以把服務(wù)器端腳本與 HTML 內(nèi)容結(jié)合起來。表達邏輯通常和商務(wù)及數(shù)據(jù)邏輯混在一起,這使得當程序員試圖改變一個應(yīng)用程序的外觀而不想破壞與之緊密結(jié)合的商務(wù)邏 10 輯時,應(yīng)用程序的維護就變得十分艱難。然而,隨著時間的推移,人們認識到這種方法不適于構(gòu)建大型的、可升級的 Web 應(yīng)用程序。 SSJS 和 ASP 都是在幾年前推出的,那時網(wǎng)絡(luò)還很年輕,沒有人知道除了把所有的商務(wù)、數(shù)據(jù)和表達邏輯統(tǒng)統(tǒng)堆進原始網(wǎng)頁中之外還有什么更好的解決方法。按照 JSP規(guī)范書寫,和 Java 沒有任何關(guān)系的 Scriptlet 也是可以的,不過,由于 JSP 的強大功能主要在于能和 JavaBeans、 Enterprise JavaBeans 共同運轉(zhuǎn),所以即使是 Scriptlet 部分不使用Java,編譯成的執(zhí)行 代碼也應(yīng)該是與 Java 相關(guān)的。 在 JSP 規(guī)范書中,并沒有明確要求 JSP 中的程序代碼部分 (稱為 Scriptlet)一定要用Java 來寫。 一般來說,在實際的 JSP 引擎中, JSP 頁面在執(zhí)行時是編譯式,而不是解釋式的。JavaBeans 類完成數(shù)據(jù)提供,這樣在模板中就沒有 Java 代碼,這意味著這些模板可以由一個 HTML 編寫人員來維護。 作為一種基于文本的、以顯示為中心的開發(fā)技術(shù), JSP 提供了 Java Servlet 的所有好處,并且, 當與一個 JavaBeans 類結(jié)合在一起時, JSP 提供了一種使內(nèi)容和顯示邏輯分開的簡單方式。 JSP 的特點 按照腳本語言是服務(wù)于某一個子系統(tǒng)的語言這種論述, JSP 應(yīng)當被看作是一 種腳本語言。像 SSJS 一樣,它也允許你將靜態(tài) HTML 內(nèi)容與服務(wù)器端腳本混合起來生成動態(tài)輸出。實際上 ,JSP 不只采用了這種通用概念 ,它甚至使用許多和 ASP 相同的特殊標簽。 ColdFusion 多年前就已經(jīng)這樣做了。 ” 在此 , Gosling 的抱怨顯示出,他感到這個公司會從其他公司那里拿走技術(shù) ,用于他們自己的目的 .出人意料的是,形勢已經(jīng)完全不同 。 主席向該經(jīng)理詢問他的想法 .他 回答 說 ,雖然現(xiàn)在言之過早,但這看起來會是非常有前途的一項技術(shù)。隔幾個位置 ,是來自華盛頓一家大型軟件公司的高級經(jīng)理。為了解 決 Java Servlet 的這種缺點, SUN 推出了 JSP。由于Java Servlet 內(nèi)部是以線程方式提供服務(wù),不必對于每個請求都啟動一個進程,并且利用多線程機制可以同時為多個請求服務(wù),因此 Java Servlet 效率非常高。許多 Web 服務(wù)器都支持 Servlet,即使不直接支持 Servlet 的 Web 服務(wù)器也可以通過附加的應(yīng)用服務(wù)器和模塊來支持 Servlet。 Java Servlet 是 JSP 技術(shù)的基礎(chǔ),而且大型的 Web 應(yīng)用程序的開發(fā)需要 Java Servlet和 JSP 配合才能完成, Servlet 這個名稱源于 Applet,現(xiàn)在國內(nèi)的翻譯方式很多,本書為了避免誤會,決定直接采用 Servlet 而不做任何翻譯,讀者如果愿意,可以稱之為“小服務(wù)程序”。 JSP 的由來 Sun 公司的 JSP 技術(shù),使 Web 頁面開發(fā)人員可以使用 HTML 或者 XML 標識來設(shè)計和格式化最終頁面。 在某些項目中,更適宜選用 servlet,而 針對項目中的某些請求, 我們 可能會在 MVC 構(gòu)架下組合使用這兩項技 術(shù)。 此處的討論并不是說人們應(yīng)該放棄使用 servlet 而僅僅使用 JSP。對于大型的項目,這種劃分極為重要。 Java 程序員可以致 力于動態(tài)代碼。即使 是 那些對 JSP 一無所知的 HTML 工具,我們也可以使用,因為它們會忽略 JSP 標簽( JSP tags)。 JSP 中可以使用常規(guī)的 HTML:沒有額外的反斜杠,沒有額外的雙引號,也沒有暗含的 Java 語法。畢竟,在特定平臺上能夠用 Java 編程語言完成的事情,同樣可以用匯編語言來完成,但是選擇哪種語言依舊十分重要。然而,這種底層的等同性并不意味著 servlet 和 JSP 頁面對于所有的情況都等同適用。 JSP 頁面最終會轉(zhuǎn)換成 servlet。兩者都提供在 HTML 代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。 概述 JSP(Java Server Pages)是由 Sun Microsystems 公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標準,其在動態(tài)網(wǎng)頁的建設(shè)中有其強大而特別的功能。按照 Sun的說法, JSP 能夠適應(yīng)市場上包括 Apache WebServer、 在內(nèi)的 85%的服務(wù)器產(chǎn)品。 在 Sun 正 式發(fā)布 JSP(Java Server Pages)之后,這種新的 Web 應(yīng)用開發(fā)技術(shù)很快引起了人們的關(guān)注。與SSJS 和 ASP 相比, JSP 具有更好的可擴展性,并且它不專屬于任何一家廠商或某一特定的 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 mod ule for the perpendicular application plait in the skill area, but the developer can go fetch the usage directly but need 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 present in 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 6 send to JSP page in. The code of JSP controls to carry on hour of the logic processing and module of JavaBeanses3