前言:本站為你精心整理了Highlights of JSP Practise范文,希望能為你的創(chuàng)作提供參考價值,我們的客服老師可以幫助你提供個性化的參考范文,歡迎咨詢。
摘要:本文著重介紹JSP技術開發(fā)動態(tài)網(wǎng)站中的各種優(yōu)缺點,簡要分析JSP技術和ASP技術的不同之處。
關鍵字:JSP,Java,JDBC-ODBC,JavaBean。
一、引言
在Internet上的眾多網(wǎng)站中,基于WEB數(shù)據(jù)庫的動態(tài)網(wǎng)站應用相當廣泛。基于WEB網(wǎng)絡數(shù)據(jù)庫的動態(tài)網(wǎng)站由一個WEB瀏覽器作為客戶端界面,一個數(shù)據(jù)庫服務器用作信息存儲和一個連接兩者的WEB應用服務器組成。原有開發(fā)動態(tài)網(wǎng)站的CGI技術,隨著WEB應用程序的客戶端技術不斷地發(fā)展,逐漸被JavaApplet、ActiveX控件、DHTML和JavaScript所取代,這些技術極大地改善了用戶界面,但當它們嘗試做一些深入的工作時,它們開始遇到客戶端瀏覽器不兼容、服務器負擔過重、訪問速度下降以及安全性的問題。JSP技術就是解決這些問題的一把金鑰匙,本文主要介紹在使用JSP技術構建動態(tài)網(wǎng)站的過程中對該技術的一些要點和難點。
二、JSP技術要點
JSP是基于JavaServlet以及整個Java體系的Web開發(fā)技術,利用這一技術可以建立先進、安全、快速和跨平臺的動態(tài)網(wǎng)站。在傳統(tǒng)的網(wǎng)頁HTML文件中加入Java程序片段和JSP標記,就構成了JSP網(wǎng)頁。Web服務器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序片段,然后將執(zhí)行結果以HTML格式返回給客戶。程序片段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送email等等,這就是建立動態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務器端執(zhí)行,網(wǎng)絡上傳送給客戶端的僅是得到的結果,對客戶瀏覽器的要求很低。如圖1所示,在用戶連接JSP網(wǎng)站時,用戶請求網(wǎng)頁,JSP頁面獨自響應請求,將用戶對網(wǎng)頁的請求轉(zhuǎn)化為對數(shù)據(jù)的請求,通過JavaBean處理請求并將返回的數(shù)據(jù)封裝成HTML頁面返回給用戶。
利用JSP編寫的程序有許多優(yōu)勢:
1、程序?qū)懸淮危教幙梢赃\行:JSP在設計時,充分考慮到應用平臺的無關性。依賴于Java的可移植性,JSP得到目前許多流行OS平臺的支持,可在Apache、Netscape、IIS等服務器上執(zhí)行。
2、執(zhí)行速度快:JSP頁面只需編譯一次轉(zhuǎn)化為Java字節(jié)代碼,其后一直駐留于服務器內(nèi)存中,加快了對JSP頁面的響應速度。若不考慮JSP頁面第一次編譯所花的時間,則JSP的響應速度要比ASP快的多。
3、Java的優(yōu)勢:JSP技術是用Java語言作為腳本語言的??缙脚_、成熟、健壯、易擴充的Java技術使得開發(fā)人員的工作在其他方面也變得容易和簡單。在Windows系統(tǒng)被懷疑可能會崩潰時,Java能有效地防止系統(tǒng)崩潰。Java語言通過提供防止內(nèi)存泄漏的方法,在內(nèi)存管理方面大顯身手。加之,JSP為應用程序提供了更為健壯的意外事件處理機制更大的發(fā)揮了Java的優(yōu)勢。
三、JSP技術難點
1、連接數(shù)據(jù)庫
數(shù)據(jù)庫連接對動態(tài)網(wǎng)站來說是最為重要的部分,在與后端數(shù)據(jù)庫連接時我們可以采用ODBC或JDBC技術。雖然ODBC作為傳統(tǒng)的連接數(shù)據(jù)庫的手段,在我們的程序可以是一種選擇,但是ODBC有以下的致命缺陷,從而使它無法勝任JSP的請求;
①ODBC是一個C語言實現(xiàn)的API,從Java程序調(diào)用本地的C程序會帶來一系列類似安全性、完整性、健壯性方面的缺點。
②其次,完全精確的實現(xiàn)從C代碼ODBC到JavaAPI翻譯的ODBC也不會另人滿意,因為在Java中沒有指針,而ODBC中大量的使用了指針,包括極易出錯的空指針“void*”。
③考慮到平臺移植性來說,在開發(fā)JSP程序中使用ODBC則會帶來負面影響,使得代碼不適合于移植。
為了使我們的程序在具有安全性、完整性、健壯性的同時,同時有可以方便的移植,所以我們可以采用JDBC連接數(shù)據(jù)庫。JDBC是一種可用于執(zhí)行SQL語句的JavaAPI。它由一些Java語言寫的類、界面組成,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應用程序。通過使用JDBC,我們很方便地將SQL語句傳送到幾乎任何一種數(shù)據(jù)庫。也就是說,我們可以不必寫一個程序訪問Sybase,寫另一個程序訪問Oracle,再寫一個程序訪問Microsoft的SQLServer。用JDBC寫的程序能夠自動地將SQL語句傳送給相應的數(shù)據(jù)庫管理系統(tǒng)。
在本地數(shù)據(jù)庫程序使用Microsoft的Access等數(shù)據(jù)庫時,我們可以使用Sun公司開發(fā)的JDBC-ODBCBridge,用此技術JSP程序就可以訪問帶有ODBC驅(qū)動程序的數(shù)據(jù)庫。這樣即保證了JDBC的優(yōu)點而且保證了純JSP程序的安全性、完整性、健壯性和可移植性,又可以使用Microsoft提供的ODBC數(shù)據(jù)源與Access連接。不管對方是何種數(shù)據(jù)庫,只要有ODBC接口就可以直接使用JDBC-ODBCBridge與數(shù)據(jù)庫連接,而無需因為后端數(shù)據(jù)庫的改變而改動相應的程序代碼,實現(xiàn)了應用層與數(shù)據(jù)庫層的完美分離。如果我們需要變后端數(shù)據(jù)庫為MySQL,只需要在ODBC數(shù)據(jù)源中安裝了MySQL的驅(qū)動程序之后,就可以直接使用MySQL數(shù)據(jù)庫了。
2、內(nèi)建的組件
在實現(xiàn)網(wǎng)站的時候,由于客觀需要,為了方便區(qū)分本地局域網(wǎng)用戶與遠端連上來的用戶并提供相應的權限,我們采用內(nèi)建的組件Request來捕獲每一個聯(lián)到服務器上的用戶的IP地址,通過比較之后給出相應的權限。這樣既可以方便管理,而且可以做到本局域網(wǎng)內(nèi)用戶可以使用網(wǎng)站內(nèi)所有公開的和不對外公開的資源。我們還可以將現(xiàn)有的方法加以改進,將各種IP地址輸入到數(shù)據(jù)庫中并且賦予不同的IP地址不同的權限,就可以完整的控制用戶使用網(wǎng)站資源了。
會話狀態(tài)維持是Web應用開發(fā)者必須面對的問題。為了了解用戶是否還在線,我們使用了內(nèi)建的Session組件,通過給每個登陸用戶一個Session變量我們可以在用戶非正常離開網(wǎng)站之后,關閉該用戶使用的資源,達到節(jié)省內(nèi)存,提高服務器性能的目的。
在JSP中還提供了Cookie類,其構造器有兩個參數(shù),分別代表Cookie的名字和值。Cookie類中提供了各種方法設置Cookie的屬性,如通過setMaxAge()方法可以設置Cookie的生存時間。若生存時間為負值,代表瀏覽器關閉Cookie即消失。生存時間為0,代表刪除Cookie,生存時間為正數(shù),代表Cookie存在多少秒??梢杂肅ookie臨時保存用戶的賬號和口令,JSP可隨時讀取,驗證用戶的合法性??梢詫⒂脩舻臑g覽狀態(tài)保存在Cookie中,下次用戶再訪問網(wǎng)頁時,可由JSP向瀏覽器顯示個性化頁面。
3、轉(zhuǎn)換Unicode編碼
在許多JSP頁面的調(diào)試過程中都碰到過許多由于漢字編碼與Unicode編碼轉(zhuǎn)換引起的問題。經(jīng)常遇到瀏覽器中看到的JSP頁面中的漢字都是亂碼、JSP頁面無法正常顯示GBK漢字、JSP不能接收Form提交的漢字、JSP數(shù)據(jù)庫讀寫無法獲得正確的內(nèi)容等等問題。這是因為現(xiàn)在大部分具有國際化特征的軟件核心字符處理都是以Unicode為基礎的,在軟件運行時根據(jù)當時Locale/Lang/Codepage設
置確定相應的本地字符編碼設置,并依此處理本地字符,所以我們應該在處理過程中實現(xiàn)Unicode和本地字符集的相互轉(zhuǎn)換,甚或以Unicode為中間的兩個不同本地字符集的相互轉(zhuǎn)換。這種方式在網(wǎng)絡環(huán)境下被進一步延伸,任何網(wǎng)絡兩端的字符信息也需要根據(jù)字符集的設置轉(zhuǎn)換成可接受的內(nèi)容。
由于我的IE默認字符集為GB2312,然而Windows默認為GBK,Java則默認為Unicode,所以如果不通過一定的轉(zhuǎn)換,直接在GB2312字符集上顯示從GBKàUnicode得到的頁面將是一片亂碼。JAVA語言采用Unicode處理字符。但從另一個角度來說,在Java程序中也可以采用非Unicode的轉(zhuǎn)碼,重要的是保證程序入口和出口的漢字信息不失真。如完全采用ISO-8859-1來處理漢字也能達到正確的結果。在我的例子中就采用了這種方法,經(jīng)過轉(zhuǎn)換之后并將網(wǎng)頁字符集強制設為GB2312字符集顯示,就能夠正常顯示漢字了。四、JSP與ASP的比較
ASP技術也是動態(tài)網(wǎng)頁開發(fā)技術。JSP和ASP從形式上非常相似,但是深入探究下去會發(fā)現(xiàn)它們很多的差別,其中最主要的有以下幾點:
1、ASP和JSP的工作原理不同
當Web服務器接收到對ASP頁面的請求時,它從硬盤或者內(nèi)存中接受正確的ASP文件,并將這個文件發(fā)送給ASP.DLL文件,ASP文件將會從頭至尾被解釋執(zhí)行并根據(jù)命令要求生成響應的HTML頁面送回給瀏覽器。ASP.DLL會針對每個請求產(chǎn)生一個獨立的線程。
JSP由支持它的服務器上的JSP引擎負責解釋執(zhí)行。當服務器接收到一個對某JSP頁面的請求時,如果這時對該頁面創(chuàng)建或修改后的第一次請求,那么JSP引擎就把該JSP頁面內(nèi)容轉(zhuǎn)變成一個純Java的Servlet,然后將其編譯成Servlet字節(jié)代碼,這個Servlet可以調(diào)用其他的Servlet或JavaBeans,最后將Servlet的執(zhí)行結果輸出給瀏覽器。JSP頁面被編譯成Servlet之后,其執(zhí)行代碼以獨立線程的方式一直存在于服務器的內(nèi)存中。以后對該JSP頁面提出請求時,不需要重新編譯,除非該頁面被修改。JavaServlet由于在服務器端運行,并且不包括會占用大量系統(tǒng)資源的GUI,因此運行的速度要比JavaApplet和Java獨立應用程序快。
2、JSP的效率和安全性更高
ASP以源碼形式存放,以解釋方式運行,每次ASP網(wǎng)頁調(diào)用都需要對源碼進行解釋,運行效率不高。另外,IIS的漏洞曾使得許多網(wǎng)站源程序大曝光,許多用ASP開發(fā)的網(wǎng)站,ASP程序全部被人下載去了,這樣多網(wǎng)站的安全性產(chǎn)生了很大的危害。JSP源程序不大可能被下載,特別是JavaBean程序完全可以放到不對外的目錄中;而且我們可以將Bean的JSP原程序刪除,只剩下Class文件,網(wǎng)站照樣可以運行。
3、JSP的組件方式更方便
ASP通過COM來擴充復雜的功能,如文件上載、發(fā)送email以及將業(yè)務處理或者復雜計算分離出來成為獨立可重復利用的模塊。JSP通過JavaBean實現(xiàn)了同樣的功能擴充。在開發(fā)方面,COM的開發(fā)遠比JavaBean復雜和繁瑣,學會ASP不難,但學會開發(fā)COM可不簡單。而JavaBean就簡單多了,從本文上述示例中可以看出開發(fā)JavaBean很方便。
在維護方面,COM必須在服務器上注冊,如果修改了COM程序,就必須重新注冊,甚至必須關機和重新啟動。JavaBean則不需要注冊,放在CLASSPATH包含的目錄中就行了。如果JavaBean進行了修改,則JSWDK和Tomcat現(xiàn)在還需要關閉和重新運行(但不是關機),但開發(fā)者已經(jīng)許諾將在以后的版本中做到不需要關閉服務器。
另外JSP這種基于組件的模式很有效地提高了應用程序的開發(fā)效率,因為這種模式能夠使開發(fā)人員利用快捷的子組件快速創(chuàng)建模板應用程序,然后再整合一些附加功能以后便可使用。像這樣的由于Java語言的優(yōu)勢而產(chǎn)生的有效的方法在JSP中無處不在,并可將其打包成一個JavaBeans或一個EJB組件。
4、JSP的適應平臺更廣
ASP目前僅適用于NT和IIS。雖然Unix下有ChiliSoft的插件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的組合來擴充,而且ActiveX對象必須事先放置于所選擇的平臺,Unix下的COM實現(xiàn)起來非常困難。
JSP則不同,幾乎所有平臺都支持Java,JSP+JavaBean可以在所有平臺下通行無阻。NT下IIS通過一個插件,例如JRUN,就能支持JSP。著名的Web服務器Apache已經(jīng)能夠支持JSP。雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場份額,但是在服務器方面Unix的優(yōu)勢仍然很大,而新崛起的Linux更是來勢不小。由于Apache廣泛應用在NT、Unix和Linux上,因此JSP有更廣泛的運行平臺。從一個平臺移植到另外一個平臺,JSP和JavaBean甚至不用重新編譯,因為Java字節(jié)碼都是標準的與平臺無關的。將在實驗的JSP網(wǎng)頁原封不動地拿到Linux相應的服務器下就運行起來了,感覺非常好。
五、發(fā)展與展望
隨著Internet/Intranet技術的不斷發(fā)展,只有服務器端動態(tài)網(wǎng)頁技術才能滿足各種Web應用程序日益提高的要求,因此各種動態(tài)網(wǎng)頁技術先后出現(xiàn),如CGI、ASP、PHP及JSP等。JSP技術是很有發(fā)展前景并具有強大功能的服務器端動態(tài)網(wǎng)頁技術。本文來自范文中國網(wǎng)。ASP技術雖然不失為一種優(yōu)秀的Web應用程序開發(fā)技術。但同時也應該看到,在Internet上基于WindowsNT+IIS的服務器畢竟占少數(shù),有關資料表明大約是15%,其余Web服務器則是基于Unix、Linux等其他操作系統(tǒng),而JSP由于它的跨平臺特性,使得其應用范圍極其廣泛,而且由于其參與制定標準的廠商眾多,并開放源碼,提供免費的JSP實現(xiàn),因此盡管JSP技術目前還處于發(fā)展變化之中,但其發(fā)展?jié)摿Σ豢傻凸馈?/p>
參考文獻:
1.何雄,JSP網(wǎng)絡程序設計人民出版社
2.林邦杰,JSP交互網(wǎng)站事務經(jīng)典中國青年出版社
3./developerWorks/java/java_chinese/index.shtml
4.DuaneK.Fields,MarkA.Kolb,WebDevelopmentwithJavaServerPagesManningPublicationsCo.
Abstract:thispaperdiscussesJSPtechnologyinWebSitedevelopingandtellsthedifferencebetweenJSPandASP.
Keyword:JSP,Java,JDBC-ODBC,JavaBean.