小議動(dòng)態(tài)網(wǎng)頁開發(fā)中jsp技術(shù)
時(shí)間:2022-05-04 03:18:00
導(dǎo)語:小議動(dòng)態(tài)網(wǎng)頁開發(fā)中jsp技術(shù)一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
隨著網(wǎng)絡(luò)的不斷快速發(fā)展,基于Web數(shù)據(jù)庫的動(dòng)態(tài)網(wǎng)站應(yīng)用開發(fā)也相當(dāng)?shù)膹V泛?;赪eb網(wǎng)絡(luò)數(shù)據(jù)庫的動(dòng)態(tài)網(wǎng)站是由一個(gè)Web瀏覽器和一個(gè)數(shù)據(jù)庫服務(wù)器構(gòu)成的,瀏覽器作為客戶端界面,數(shù)據(jù)庫用做信息存儲(chǔ),然后將這兩者運(yùn)用應(yīng)用服務(wù)器連接起來。原有開發(fā)動(dòng)態(tài)網(wǎng)站的技術(shù),隨著Web應(yīng)用程序的客戶端技術(shù)不斷地發(fā)展,逐漸被JavaApplet、ActiveX控件、DHTML和javascript等眾多新技術(shù)所取代。這些技術(shù)極大地改善了用戶界面,但當(dāng)它們嘗試做一些深入的工作時(shí),開始遇到客戶端瀏覽器不兼容、服務(wù)器負(fù)擔(dān)過重、訪問速度下降以及安全性等問題。jsp技術(shù)就是解決這些問題的關(guān)鍵所在,這里主要討論在使用JSP技術(shù)構(gòu)建動(dòng)態(tài)網(wǎng)站的過程中遇到的一些技術(shù)問題。
一、JSP技術(shù)介紹
JSP是基于JavaServlet以及整個(gè)Java體系的Web開發(fā)技術(shù),利用這一技術(shù)建立的動(dòng)態(tài)網(wǎng)站具有先進(jìn)、安全、快速和跨平臺(tái)等優(yōu)點(diǎn)。Jsp網(wǎng)頁的制作也非常簡(jiǎn)單,不需要接收大量的新信息,只要在傳統(tǒng)的網(wǎng)頁HTML文件中加入Java程序片段和JSP標(biāo)記,就構(gòu)成了JSP網(wǎng)頁。Web服務(wù)器接收到訪問JSP網(wǎng)頁的請(qǐng)求時(shí),首先執(zhí)行其中的程序片段,然后將執(zhí)行結(jié)果以HTML格式返回給客戶。程序片段中可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁以及發(fā)送E-mail等等,這就是建立動(dòng)態(tài)網(wǎng)站所需要的功能。所有程序操作都在服務(wù)器端執(zhí)行,網(wǎng)絡(luò)上傳送給客戶端的僅是得到的結(jié)果,對(duì)客戶瀏覽器的要求很低。在用戶連接JSP網(wǎng)站時(shí),用戶請(qǐng)求網(wǎng)頁,JSP頁面獨(dú)自響應(yīng)請(qǐng)求,將用戶對(duì)網(wǎng)頁的請(qǐng)求轉(zhuǎn)化為對(duì)數(shù)據(jù)的請(qǐng)求,通過JavaBean處理請(qǐng)求并將返回的數(shù)據(jù)封裝成HTML頁面返回給用戶。
二、JSP技術(shù)難點(diǎn)
1.連接數(shù)據(jù)庫
數(shù)據(jù)庫連接對(duì)動(dòng)態(tài)網(wǎng)站來說是最為重要的部分,在與后端數(shù)據(jù)庫連接時(shí)可以采用ODBC或JDBC技術(shù)。Java中連接數(shù)據(jù)庫的技術(shù)是JDBC(JavaDatabaseConnectivity)。很多數(shù)據(jù)庫系統(tǒng)帶有JDBC驅(qū)動(dòng)程序,Java程序就通過JDBC驅(qū)動(dòng)程序與數(shù)據(jù)庫相連,執(zhí)行查詢、提取數(shù)據(jù)等等操作。雖然ODBC作為傳統(tǒng)的連接數(shù)據(jù)庫的手段是一種選擇,但是ODBC有以下致命缺陷,從而使它無法勝任JSP的請(qǐng)求:
(1)ODBC是C語言實(shí)現(xiàn)的API,從Java程序調(diào)用本地的C程序會(huì)帶來一系列類似安全性、完整性、健壯性方面的問題。
(2)其次,完全精確地實(shí)現(xiàn)從C代碼ODBC到JavaAPI翻譯的ODBC不會(huì)令人滿意,因?yàn)樵贘ava中沒有指針,而ODBC中大量地使用了指針,c語言與java實(shí)現(xiàn)的內(nèi)在差異會(huì)帶來一些諸如內(nèi)存泄漏等重大的安全性問題。
要想使程序兼具安全與可移植性,JDBC是首選。JDBC是一種可用于執(zhí)行SQL語句的JavaAPI,它由一些Java語言寫的類、界面組成,使開發(fā)人員可以用純Java語言編寫完整的數(shù)據(jù)庫應(yīng)用程序,同時(shí)我們也在享用java帶來的種種優(yōu)點(diǎn)。通過使用JDBC,可以很方便地將SQL語句傳送到幾乎任何一種數(shù)據(jù)庫。也就是說,可以不必寫一個(gè)程序訪問Sybase,寫另一個(gè)程序訪問Oracle,再寫一個(gè)程序訪問Microsoft的SQLServer。用JDBC寫的程序能夠自動(dòng)地將SQL語句傳送給相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)。
Sun公司還開發(fā)了JDBC-ODBCbridge,用此技術(shù)Java程序就可以訪問帶有ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫,目前大多數(shù)數(shù)據(jù)庫系統(tǒng)都帶有ODBC驅(qū)動(dòng)程序,所以Java程序能訪問諸如Oracle、Sybase、MSSQLServer和MSAccess等數(shù)據(jù)庫。在本地?cái)?shù)據(jù)庫程序使用Microsoft的Access等數(shù)據(jù)庫時(shí),就可以使用Sun公司開發(fā)的JDBC-ODBC橋,借用此技術(shù)JSP程序就可以訪問帶有ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫。這樣既保留JDBC的優(yōu)點(diǎn),又可以使用Microsoft提供的ODBC數(shù)據(jù)源與Access連接。不管對(duì)方是何種數(shù)據(jù)庫,只要有ODBC接口就可以直接使用JDBC-ODBC橋與數(shù)據(jù)庫連接,而無需因?yàn)楹蠖藬?shù)據(jù)庫的改變而改動(dòng)相應(yīng)的程序代碼,實(shí)現(xiàn)了應(yīng)用層與數(shù)據(jù)庫層的完美分離。如果需要變后端數(shù)據(jù)庫為MySQL,只需在ODBC數(shù)據(jù)源中安裝MySQL的驅(qū)動(dòng)程序之后,就可以直接使用MySQL數(shù)據(jù)庫了。
2.網(wǎng)頁亂碼問題
亂碼問題是大家在開發(fā)網(wǎng)頁中常見的問題,明明在編輯時(shí)一切都好,可以真正在執(zhí)行網(wǎng)頁時(shí)就會(huì)出現(xiàn)瀏覽器中看到的JSP頁面中的漢字都是亂碼、JSP頁面無法正常顯示漢字、JSP不能接收表單提交的漢字、JSP數(shù)據(jù)庫讀寫無法獲得正確的內(nèi)容等等問題。這是由于現(xiàn)在大部分具有國(guó)際化特征的軟件核心字符處理都是以Unicode為基礎(chǔ)的,在軟件運(yùn)行時(shí)根據(jù)當(dāng)時(shí)”Locale/Lang/Codepage”設(shè)置確定相應(yīng)的本地字符編碼設(shè)置,并依此處理本地字符,所以應(yīng)該在處理過程中實(shí)現(xiàn)Unicode和本地字符集的相互轉(zhuǎn)換,甚至以Unicode為中介的兩個(gè)不同本地字符集的相互轉(zhuǎn)換。這種方式在網(wǎng)絡(luò)環(huán)境下被進(jìn)一步延伸,任何網(wǎng)絡(luò)兩端的字符信息也需要根據(jù)字符集的設(shè)置轉(zhuǎn)換成可接受的內(nèi)容。
由于IE默認(rèn)字符集為GB2312,然而Windows默認(rèn)為GBK,Java則默認(rèn)為Unicode,所以如果不通過一定的轉(zhuǎn)換,直接在GB2312字符集上顯示從GBK或Unicode得到的頁面將是一片亂碼。Java語言采用Unicode處理字符,但從另一個(gè)角度來說,在Java程序中也可以采用非Unicode,重要的是保證程序入口和出口的漢字信息不失真。如完全采用ISO-8859-1來處理漢字也能達(dá)到正確的結(jié)果,經(jīng)過轉(zhuǎn)換之后并將網(wǎng)頁字符集強(qiáng)制設(shè)為GB2312字符集顯示,就能夠正常顯示漢字了。
三、JSP的優(yōu)勢(shì):
1.程序?qū)懸淮?,到處可以運(yùn)行(這是所有java語言的共同優(yōu)點(diǎn))。JSP在設(shè)計(jì)時(shí),充分考慮到應(yīng)用平臺(tái)的無關(guān)性。依賴于Java的可移植性,JSP得到目前許多流行操作平臺(tái)的支持,可在Apache、NetScape、IIS等服務(wù)器上執(zhí)行。
2.執(zhí)行速度快。JSP頁面只需編譯一次轉(zhuǎn)化為Java字節(jié)代碼,其后一直駐留于服務(wù)器內(nèi)存中,加快了對(duì)JSP頁面的響應(yīng)速度。若不考慮JSP頁面第一次編譯所花的時(shí)間,則JSP的響應(yīng)速度要比ASP快得多。
3.Java的優(yōu)勢(shì)。JSP技術(shù)是用Java語言作為腳本語言的??缙脚_(tái)、成熟、健壯、易擴(kuò)充的Java技術(shù)使得開發(fā)人員的工作在其他方面也變得容易和簡(jiǎn)單。在Windows系統(tǒng)被懷疑可能會(huì)崩潰時(shí),Java能有效地防止系統(tǒng)崩潰。Java語言通過提供防止內(nèi)存泄漏的方法,在內(nèi)存管理方面大顯身手。加之,JSP為應(yīng)用程序提供了更為健壯的意外事件處理機(jī)制,充分發(fā)揮了Java的優(yōu)勢(shì)。
4、強(qiáng)大的的可伸縮性。從只有一個(gè)小的jar文件就可以運(yùn)行servlet/jsp到由多臺(tái)服務(wù)器進(jìn)行集群和負(fù)載均橫,到多臺(tái)Application進(jìn)行事務(wù)處理、消息處理,一臺(tái)服務(wù)器到無數(shù)以服務(wù)器,Java顯示了一個(gè)巨人的生命力。
5、多樣化和功能強(qiáng)大的開發(fā)工具支持。這一點(diǎn)與asp很像,java已經(jīng)有了許多非常優(yōu)秀的開發(fā)工具而且有許多可以免費(fèi)得到,并且其中的許多已經(jīng)可以順利的運(yùn)行于多種平臺(tái)之下。如果你細(xì)心的使用它們會(huì)發(fā)現(xiàn)比自己第一面看到它們時(shí)的功能要強(qiáng)大的多。
四、結(jié)論:
根據(jù)以上對(duì)jsp技術(shù)的優(yōu)勢(shì)和難點(diǎn)的分析,可知隨著網(wǎng)絡(luò)技術(shù)應(yīng)用的不斷發(fā)展,jsp必將在此領(lǐng)域大展拳腳。
參考文獻(xiàn):
[1]周慧貞jsp應(yīng)用開發(fā)詳解(第三版)電子工業(yè)出版社2007
[2]唐有明jsp動(dòng)態(tài)網(wǎng)站開發(fā)清華大學(xué)出版社2006