百科解釋
目錄·JSP簡介·JSP技術(shù)的強(qiáng)勢·JSP技術(shù)的弱勢·JSP六種內(nèi)置對象:·JSP動態(tài)網(wǎng)站開發(fā)技術(shù) JSP簡介JSP(JavaServer Pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與一起建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。JSP技術(shù)有點(diǎn)類似ASP技術(shù),它是在傳統(tǒng)的網(wǎng)頁HTML文件(*.htm,*.html)中插入Java程序段(s criptlet)和JSP標(biāo)記(tag),從而形成JSP文件(*.jsp)。 用JSP開發(fā)的Web應(yīng)用是跨平臺的,即能在Linux下運(yùn)行,也能在其他操作系統(tǒng)上運(yùn)行。 JSP技術(shù)使用Java編程語言編寫類XML的tags和s criptlets,來封裝產(chǎn)生動態(tài)網(wǎng)頁的處理邏輯。網(wǎng)頁還能通過tags和s criptlets訪問存在于服務(wù)端的資源的應(yīng)用邏輯。JSP將網(wǎng)頁邏輯與網(wǎng)頁設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開發(fā)變得迅速和容易。 Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實(shí)現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能。 JSP與Java Servlet一樣,是在服務(wù)器端執(zhí)行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。 JSP的1.0規(guī)范的最后版本是1999年9月推出的,12月又推出了1.1規(guī)范。目前較新的是JSP1.2規(guī)范,JSP2.0規(guī)范的征求意見稿也已出臺。 JSP頁面由HTML代碼和嵌入其中的Java代碼所組成。服務(wù)器在頁面被客戶端請求以后對這些Java代碼進(jìn)行處理,然后將生成的HTML頁面返回給客戶端的瀏覽器。Java Servlet 是JSP的技術(shù)基礎(chǔ),而且大型的Web應(yīng)用程序的開發(fā)需要Java Servlet和JSP配合才能完成。JSP具備了Java技術(shù)的簡單易用,完全的面向?qū)ο,具有平臺無關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。 JSP技術(shù)的強(qiáng)勢 (1)一次編寫,到處運(yùn)行。在這一點(diǎn)上Java比PHP更出色,除了系統(tǒng)之外,代碼不用做任何更改。 (2)系統(tǒng)的多平臺支持;旧峡梢栽谒衅脚_上的任意環(huán)境中開發(fā),在任意環(huán)境中進(jìn)行系統(tǒng)部署,在任意環(huán)境中擴(kuò)展。相比ASP/PHP的局限性是顯而易見的。 (3)強(qiáng)大的可伸縮性。從只有一個小的Jar文件就可以運(yùn)行Servlet/JSP,到由多臺服務(wù)器進(jìn)行集群和負(fù)載均衡,到多臺Application進(jìn)行事務(wù)處理,消息處理,一臺服務(wù)器到無數(shù)臺服務(wù)器,Java顯示了一個巨大的生命力。 (4)多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與ASP很像,Java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具,而且許多可以免費(fèi)得到,并且其中許多已經(jīng)可以順利的運(yùn)行于多種平臺之下。 JSP技術(shù)的弱勢 (1) 與ASP一樣,Java的一些優(yōu)勢正是它致命的問題所在。正是由于為了跨平臺的功能,為了極度的伸縮能力,所以極大的增加了產(chǎn)品的復(fù)雜性。 (2) Java的運(yùn)行速度是用class常駐內(nèi)存來完成的,所以它在一些情況下所使用的內(nèi)存比起用戶數(shù)量來說確實(shí)是“最低性能價格比”了。從另一方面,它還需要硬盤空間來儲存一系列的.java文件和.class文件,以及對應(yīng)的版本文件。 JSP六種內(nèi)置對象: request, response, out, session, application, config, pagecontext, page, exception. 一.request對象: 該對象封裝了用戶提交的信息,通過調(diào)用該對象相應(yīng)的方法可以獲取封裝的信息,即使用該對象可以獲取用戶提交信息。 二.response對象: 對客戶的請求做出動態(tài)的響應(yīng),向客戶端發(fā)送數(shù)據(jù)。 三.session對象 1.什么是session:session對象是一個JSP內(nèi)置對象,它在第一個JSP頁面被裝載時自動創(chuàng)建,完成會話期管理。 從一個客戶打開瀏覽器并連接到服務(wù)器開始,到客戶關(guān)閉瀏覽器離開這個服務(wù)器結(jié)束,被稱為一個會話。當(dāng)一個客戶訪問一個服務(wù)器時,可能會在這個服務(wù)器的幾個頁面之間反復(fù)連接,反復(fù)刷新一個頁面,服務(wù)器應(yīng)當(dāng)通過某種辦法知道這是同一個客戶,這就需要session對象。 2.session對象的ID:當(dāng)一個客戶首次訪問服務(wù)器上的一個JSP頁面時,JSP引擎產(chǎn)生一個session對象,同時分配一個String類型的ID號,JSP引擎同時將這個ID號發(fā)送到客戶端,存放在Cookie中,這樣session對象和客戶之間就建立了一一對應(yīng)的關(guān)系。當(dāng)客戶再訪問連接該服務(wù)器的其他頁面時,不再分配給客戶新的session對象,直到客戶關(guān)閉瀏覽器后,服務(wù)器端該客戶的session對象才取消,并且和客戶的會話對應(yīng)關(guān)系消失。當(dāng)客戶重新打開瀏覽器再連接到該服務(wù)器時,服務(wù)器為該客戶再創(chuàng)建一個新的session對象。 四.a(chǎn)plication對象 1.什么是application: 服務(wù)器啟動后就產(chǎn)生了這個application對象,當(dāng)客戶再所訪問的網(wǎng)站的各個頁面之間瀏覽時,這個application對象都是同一個,直到服務(wù)器關(guān)閉。但是與session不同的是,所有客戶的application對象都是同一個,即所有客戶共享這個內(nèi)置的application對象。 2.a(chǎn)pplication對象常用方法: (1)public void setAttribute(String key,Object obj): 將參數(shù)Object指定的對象obj添加到application對象中,并為添加的對象指定一個索引關(guān)鍵字。 (2)public Object getAttribute(String key): 獲取application對象中含有關(guān)鍵字的對象。 五.out對象 out對象是一個輸出流,用來向客戶端輸出數(shù)據(jù)。out對象用于各種數(shù)據(jù)的輸出。 六.Cookie 1.什么是Cookie: Cookie是Web服務(wù)器保存在用戶硬盤上的一段文本。Cookie允許一個Web站點(diǎn)在用戶的電腦上保存信息并且隨后再取回它。 舉例來說,一個Web站點(diǎn)可能會為每一個訪問者產(chǎn)生一個唯一的ID,然后以Cookie文件的形式保存在每個用戶的機(jī)器上。 如果您使用IE瀏覽器訪問Web,您會看到所有保存在您的硬盤上的Cookie。它們最常存放的地方是:c:windowscookies(在Window2000中則是C:Documents and Settings您的用戶名Cookies ) Cookie是以“關(guān)鍵字key=值value“的格式來保存紀(jì)錄的. 2.創(chuàng)建一個Cookie對象,調(diào)用Cookie對象的構(gòu)造函數(shù)可以創(chuàng)建Cookie。Cookie對象的構(gòu)造函數(shù)有兩個字符串參數(shù):Cookie名字和Cookie值。 Cookie c=new Cookie(“username”,”john”); 3. JSP中如果要將封裝好的Cookie對象傳送到客戶端,使用response的addCookie()方法。 格式:response.addCookie(c) 4.讀取保存到客戶端的Cookie,使用request對象的getCookies()方法,執(zhí)行時將所有客戶端傳來的Cookie對象以數(shù)組的形式排列,如果要取出符合需要的Cookie對象,就需要循環(huán)比較數(shù)組內(nèi)每個對象的關(guān)鍵字。 JSP動態(tài)網(wǎng)站開發(fā)技術(shù)早期的動態(tài)網(wǎng)站開發(fā)技術(shù)使用的是CGI-BIN接口。開發(fā)人員編寫與接口相關(guān)的單獨(dú)的程序和基于Web的應(yīng)用程序,后者通過Web服務(wù)器來調(diào)用前者。這種開發(fā)技術(shù)存在著嚴(yán)重的擴(kuò)展性問題——每一個新的CGI程序要求在服務(wù)器上新增一個進(jìn)程。如果多個用戶并發(fā)地訪問該程序,這些進(jìn)程將耗盡該Web服務(wù)器所有的可用資源,直至其崩潰。 為克服這一弊端,微軟公司提出了Active Server Pages(ASP)技術(shù),該技術(shù)利用“插件”和API簡化了Web應(yīng)用程序的開發(fā)。ASP與CGI相比,其優(yōu)點(diǎn)是可以包含HTML標(biāo)簽,可以直接存取數(shù)據(jù)庫及使用無限擴(kuò)充的ActiveX控件,因此在程序編制上更富有靈活性。但該技術(shù)基本上是局限于微軟的操作系統(tǒng)平臺之上,主要工作環(huán)境是微軟的IIS應(yīng)用程序結(jié)構(gòu),所以ASP技術(shù)不能很容易地實(shí)現(xiàn)跨平臺的Web服務(wù)器程序開發(fā)。 Hypertext Preprocessor(超文本預(yù)處理器),即PHP動態(tài)網(wǎng)站開發(fā)技術(shù)與ASP相似,也是一種嵌入HTML文檔的服務(wù)器端腳本語言。其語法大部分與C、Java、Perl等語言相似,并形成了自己的獨(dú)有風(fēng)格,利用該語言Web程序員可以快速地開發(fā)出動態(tài)網(wǎng)頁。PHP在大多數(shù)Unix平臺、GUN/Linux和微軟Windows平臺上均可以運(yùn)行。PHP的優(yōu)點(diǎn)主要有:安裝方便,學(xué)習(xí)過程簡單;數(shù)據(jù)庫連接方便,兼容性強(qiáng);擴(kuò)展性強(qiáng);可以進(jìn)行面向?qū)ο缶幊痰取5玃HP也存在一些弱點(diǎn),主要是PHP是一種解釋型語言,不支持多線程結(jié)構(gòu),支持平臺和連接的數(shù)據(jù)庫都有限,特別是在支持的標(biāo)準(zhǔn)方面存在先天不足,對于某些電子商務(wù)應(yīng)用來說,PHP是不適合的。 還有一些技術(shù),如Java Servlets技術(shù),利用該技術(shù)可以很容易地用Java語言編寫交互式的服務(wù)器端代碼。一個Java Servlets就是一個基于Java技術(shù)的運(yùn)行在服務(wù)器端的程序(與Applet不同,后者運(yùn)行在瀏覽器端)。開發(fā)人員編寫這樣的Java Servlets,以接收來自Web瀏覽器的HTTP請求,動態(tài)地生成響應(yīng)(可能需要查詢數(shù)據(jù)庫來完成這種請求),然后發(fā)送包含HTML或XML文檔的響應(yīng)到瀏覽器。這種技術(shù)對于普通的頁面設(shè)計(jì)者來說要輕易地掌握是很困難的。采用這種方法,整個網(wǎng)頁必須都在Java Servlets中制作。如果開發(fā)人員或者Web管理人員想要調(diào)整頁面顯示,就不得不編輯并重新編譯該Java Servlets。 太陽微系統(tǒng)公司(Sun Microsystems Inc.)在Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)以及開發(fā)工具供應(yīng)商間廣泛支持與合作下,整合并平衡了已經(jīng)存在的對Java編程環(huán)境(例如Java Servlets和JavaBeans)進(jìn)行支持的技術(shù)和工具后產(chǎn)生了一種新的、開發(fā)基于Web應(yīng)用程序的方法——JavaServer Pages技術(shù)(JSP)。這種動態(tài)網(wǎng)站開發(fā)技術(shù)主要有以下一些特點(diǎn): 能夠在任何Web或應(yīng)用程序服務(wù)器上運(yùn)行; 分離了應(yīng)用程序的邏輯和頁面顯示; 能夠進(jìn)行快速的開發(fā)和測試; 簡化了開發(fā)基于Web的交互式應(yīng)用程序的過程。 JSP的技術(shù)方法 為了快速方便地進(jìn)行動態(tài)網(wǎng)站的開發(fā),JSP在以下幾個方面做了改進(jìn),使其成為快速建立跨平臺的動態(tài)網(wǎng)站的首選方案。 1.將內(nèi)容的生成和顯示進(jìn)行分離 用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識來設(shè)計(jì)和格式化最終頁面,并使用JSP標(biāo)識或者小腳本來生成頁面上的動態(tài)內(nèi)容(內(nèi)容是根據(jù)請求變化的,例如請求賬戶信息或者特定的一瓶酒的價格等)。生成內(nèi)容的邏輯被封裝在標(biāo)識和JavaBeans組件中,并且捆綁在腳本中,所有的腳本在服務(wù)器端運(yùn)行。由于核心邏輯被封裝在標(biāo)識和JavaBeans中,所以Web管理人員和頁面設(shè)計(jì)者,能夠編輯和使用JSP頁面,而不影響內(nèi)容的生成。 在服務(wù)器端,JSP引擎解釋JSP標(biāo)識和腳本,生成所請求的內(nèi)容(例如,通過訪問JavaBeans組件,使用JDBC技術(shù)訪問數(shù)據(jù)庫或者包含文件),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這既有助于作者保護(hù)自己的代碼,又能保證任何基于HTML的Web瀏覽器的完全可用性。 2.可重用組件 絕大多數(shù)JSP頁面依賴于可重用的、跨平臺的組件(JavaBeans或者Enterprise JavaBeans組件)來執(zhí)行應(yīng)用程序所要求的復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者和客戶團(tuán)體所使用;诮M件的方法加速了總體開發(fā)過程,并且使得各種組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。 3.采用標(biāo)識 Web頁面開發(fā)人員不會都是熟悉腳本語言的編程人員。JSP技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標(biāo)識中進(jìn)行動態(tài)內(nèi)容生成所需要的。標(biāo)準(zhǔn)的JSP標(biāo)識能夠訪問和實(shí)例化JavaBeans組件,設(shè)置或者檢索組件屬性,下載Applet,以及執(zhí)行用其他方法更難于編碼和耗時的功能。 4.適應(yīng)平臺 幾乎所有平臺都支持Java,JSP+JavaBeans幾乎可以在所有平臺下通行無阻。從一個平臺移植到另外一個平臺,JSP和JavaBeans甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的與平臺無關(guān)的。 5.數(shù)據(jù)庫連接 Java中連接數(shù)據(jù)庫的技術(shù)是JDBC,Java程序通過JDBC驅(qū)動程序與數(shù)據(jù)庫相連,執(zhí)行查詢、提取數(shù)據(jù)等操作。Sun公司還開發(fā)了JDBC-ODBC bridge,利用此技術(shù)Java程序可以訪問帶有ODBC驅(qū)動程序的數(shù)據(jù)庫,目前大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶有ODBC驅(qū)動程序,所以Java程序能訪問諸如Oracle、Sybase、MS SQL Server和MS Access等數(shù)據(jù)庫。 此外,通過開發(fā)標(biāo)識庫,JSP技術(shù)可以進(jìn)一步擴(kuò)展。第三方開發(fā)人員和其他人員可以為常用功能創(chuàng)建自己的標(biāo)識庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標(biāo)識一樣的執(zhí)行特定功能的構(gòu)件來進(jìn)行工作。 JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且能擴(kuò)展到支持企業(yè)級的分布式應(yīng)用中。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個組成部分,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。 由于JSP頁面的內(nèi)置腳本語言是基于Java的,而且所有的JSP頁面都被編譯成為Java Servlets,所以JSP頁面具有Java技術(shù)的所有好處,包括健壯的存儲管理和安全性。作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。 JSP的應(yīng)用模型 利用JSP技術(shù),動態(tài)信息由JSP頁面來表現(xiàn),JSP頁面由安裝在Web服務(wù)器或者使用JSP的應(yīng)用服務(wù)器上的JSP引擎執(zhí)行。JSP引擎接受客戶端對JSP頁面的請求,并且生成JSP頁面作為對客戶端的響應(yīng)。 JSP頁面通常被編譯成為Java Servlets,這是一個標(biāo)準(zhǔn)的Java擴(kuò)展。頁面開發(fā)人員能夠訪問全部的Java應(yīng)用環(huán)境,以利用Java技術(shù)的擴(kuò)展性和可移植性。當(dāng)JSP頁面第一次被調(diào)用時,如果它還不存在,就會被編譯成為一個Java Servlets類,并且存儲在服務(wù)器的內(nèi)存中。這就使得在接下來的對該頁面的調(diào)用中,服務(wù)器會有非?斓捻憫(yīng)(這避免了CGI-BIN為每個HTTP請求生成一個新的進(jìn)程的問題)。 JSP頁面可以包含在多種不同的應(yīng)用體系結(jié)構(gòu)或者模型中,可以用于由不同協(xié)議、組件和格式所組成的聯(lián)合體中。基于JSP的動態(tài)信息發(fā)布技術(shù)是一個開放的、可擴(kuò)展的建立動態(tài)Web頁面的標(biāo)準(zhǔn)。不論采用什么創(chuàng)建工具,開發(fā)人員都可以使用JSP頁面來創(chuàng)建可移植的Web應(yīng)用,在不同的Web應(yīng)用服務(wù)器上運(yùn)行。
移動通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助