蔣治學(xué)
(黃山職業(yè)技術(shù)學(xué)院,安徽 黃山 245000)
JSP(java server pages)是在sun microsystems公司主導(dǎo)下,由從多公司一起參與構(gòu)建的一種動態(tài)網(wǎng)頁設(shè)計技術(shù)標(biāo)準(zhǔn),其目的在于快速、便捷、簡易地構(gòu)建一個基于web的網(wǎng)頁應(yīng)用程序。該技術(shù)的腳本語言是java語言,與其他動態(tài)網(wǎng)頁設(shè)計技術(shù)相比較,優(yōu)勢極大,尤其是跨平臺問題上,更為有效,在windows、linux、soloris等平臺下都可以正常運(yùn)行[1],并且能夠高效率執(zhí)行相應(yīng)操作,是目前動態(tài)網(wǎng)頁設(shè)計的主要技術(shù)。JSP技術(shù)使WEB開發(fā)設(shè)計人員能夠快速創(chuàng)建并維護(hù)動態(tài)網(wǎng)頁,尤其對于商業(yè)系統(tǒng)更為有利。JSP技術(shù)作為java的一個重要組成部分,能夠快速開發(fā)出一個以web為基礎(chǔ),獨(dú)立于平臺的一個應(yīng)用程序,JSP使用戶界面與系統(tǒng)內(nèi)容有效分離,設(shè)計人員不需要改動底層動態(tài)內(nèi)容,就能夠?qū)φ麄€網(wǎng)頁布局進(jìn)行轉(zhuǎn)換。本文對JSP技術(shù)、技術(shù)原理及在動態(tài)網(wǎng)頁開發(fā)中的應(yīng)用進(jìn)行分析[2]。
JSP作為一種開發(fā)語言,與原有硬件平臺相分離,從一定程度上說,分離了靜態(tài)網(wǎng)頁與動態(tài)網(wǎng)頁,使系統(tǒng)整體運(yùn)行效率顯著提高。從JSP技術(shù)原理角度講,JSP與ASP技術(shù)仍然存在很多相似之處,均是以HTML標(biāo)記集合的進(jìn)一步擴(kuò)展為基礎(chǔ)的,這些標(biāo)記經(jīng)過擴(kuò)展后,能夠有效進(jìn)行識別與解釋,但需要在服務(wù)器上安裝相應(yīng)的JSP引擎,并在引擎支持下,才能夠正確識別這些標(biāo)記。WEB服務(wù)器接收到用戶發(fā)現(xiàn)的請求時,JSP會將這些文件轉(zhuǎn)換成servlet代碼[3],再將轉(zhuǎn)換結(jié)果上傳至JVM,JVM會直接對代碼進(jìn)行編譯,在服務(wù)器中直接執(zhí)行編譯生成的文件,再將JSP接收到的編碼結(jié)果傳輸至服務(wù)器,完成要求的工作后上傳結(jié)果。服務(wù)器會以頁面形式,向客戶端上傳獲取的結(jié)果,用戶通過瀏覽器就能夠直接查看結(jié)果。代碼執(zhí)行前提是用戶提出的請求,因此,在調(diào)用代碼時,還需要消耗一定的時間進(jìn)行加載才能完成整個過程。編譯并執(zhí)行JSP后,后臺就能夠獨(dú)立運(yùn)行這些編譯代碼,用戶再次對JSP發(fā)出相應(yīng)的請求后,就會自動執(zhí)行這一程序,使整個程序能夠始終保持高效運(yùn)行[4]。
JSP是以java servlet為基礎(chǔ)構(gòu)建的一個服務(wù),同時,還對這一技術(shù)進(jìn)行了優(yōu)化改進(jìn),因此,能夠使java運(yùn)行環(huán)境下的WEB程序開發(fā)更為高效。(1)JSP能夠生成并顯示分離內(nèi)容,通過JSP技術(shù),設(shè)計人員可以運(yùn)用HTML、XHL等語言格式化并開發(fā)最終所需頁面,并運(yùn)用小腳本技術(shù)或JSP標(biāo)識等,生成動態(tài)網(wǎng)頁內(nèi)容。生成的動態(tài)內(nèi)容能夠在java bean組件及標(biāo)識中進(jìn)行封裝,捆綁腳本,使JSP標(biāo)識、腳本均能夠在服務(wù)器端上同時運(yùn)行,JSP相應(yīng)的引擎會對這些內(nèi)容進(jìn)行解釋,最后生成用戶所請求的相應(yīng)內(nèi)容。(2)能夠在各種平臺中有效適應(yīng)并保持很高的執(zhí)行效率。JSP在頁面內(nèi)容當(dāng)中內(nèi)置了腳本語言,由于其設(shè)計開發(fā)運(yùn)用了java編程語言,因此天然具備了一次編寫,因此可以多平臺運(yùn)行,能夠在各平臺間進(jìn)行轉(zhuǎn)移,不需要重新編譯相應(yīng)平臺所需要的JSP與java,整體運(yùn)行更快,執(zhí)行效率更高。(3)可重用組件。JSP在處理較為復(fù)雜的程序時,要依賴于組件,通過重用組件的方法,能夠使整體開發(fā)進(jìn)程更為順利,在完善技能的同時,優(yōu)化開發(fā)效果。第四,頁面開發(fā)更為簡化。WEB腳本語言并非所有編程人員都能夠深層次了解并掌握的內(nèi)容,但在java技術(shù)下,其內(nèi)部封裝了各種經(jīng)過HTML標(biāo)記所生成的動態(tài)內(nèi)容,一些必須的易用功能都封裝在內(nèi)。通過標(biāo)準(zhǔn)的JSP技術(shù)訪問java組件,可以利用檢索或組件屬性設(shè)置,再下載一個applet執(zhí)行這些繁瑣、復(fù)雜、耗時的功能。開發(fā)人員可以在個人標(biāo)記庫中創(chuàng)設(shè)個性化的易用功能,使設(shè)計人員能夠更為簡單、高效地開發(fā)各種WEB頁面。(4)可擴(kuò)展性強(qiáng)。一個所具備的擴(kuò)展與增強(qiáng)能力,可對已有特性輕易進(jìn)行修改,將新特性輕易地加入進(jìn)去,且這些修改與增加不會影響系統(tǒng)其他部分的運(yùn)行,這種功能被稱為可擴(kuò)展性。開發(fā)人員能夠利用JSP技術(shù)中的個性化標(biāo)記庫對動態(tài)網(wǎng)頁開發(fā)過程進(jìn)行擴(kuò)展[5]。
Java編譯代碼運(yùn)行時會利用操作系統(tǒng)中自帶的JVM虛擬機(jī)進(jìn)行解釋,不需要改動任何字節(jié)代碼就能夠在所有平臺上進(jìn)行轉(zhuǎn)移,尤其對于圖形化界面的使用,servlet本身不需要圖形界面,與傳統(tǒng)java程序相比,其運(yùn)行速度更快。HTML需要的GUI很少,因此服務(wù)器運(yùn)行時就不再需要加載很多冗長復(fù)雜的GUI,僅在用戶發(fā)現(xiàn)請求時,servlet字節(jié)代碼會執(zhí)行所需要的GUI。servlet被首次調(diào)用時,需要消耗一定時間進(jìn)行加載,但已經(jīng)運(yùn)行過的servlet則已經(jīng)在服務(wù)器中有了緩存內(nèi)容,因此后續(xù)請求處理速度很快。JSP與java平臺的結(jié)合非常緊密,當(dāng)前使用的JSP服務(wù)器,均攜帶有java即時編譯器,不需要像ASP、PHP等其它動態(tài)網(wǎng)頁代碼一樣,每次都需要經(jīng)過解釋才能運(yùn)行,尤其是一些循環(huán)操作代碼,使用JSP技術(shù)進(jìn)行處理時,其速度較其它代碼能夠提升1~2個數(shù)量級。
運(yùn)用JSP技術(shù)進(jìn)行動態(tài)網(wǎng)頁開發(fā)主要有2種實(shí)現(xiàn)方式:第一種是直接在HTML頁面中嵌入java程序,即直接在HTML頁面中寫入servlet源代碼。第二種是直接在JSP頁面下調(diào)用java bean,通過java bean包含的強(qiáng)大功能發(fā)揮作用。這兩種實(shí)現(xiàn)方式的具體運(yùn)用是由設(shè)計人員能力與項目困難度決定的。當(dāng)設(shè)計人員對于java語言編程及HTML頁面設(shè)計都很熟悉時,就可以使用第一種方式,直接改動少量需要維護(hù)的文件數(shù)目即可,但會影響文件可讀性。頁面結(jié)構(gòu)較為復(fù)雜時,java代碼與HTML代碼的混雜會增加閱讀與改動的難度。此時,需要使用后一種方法,將java代碼與HTML頁面直接分離,此時,需要維護(hù)較多數(shù)量的文件,但頁面結(jié)構(gòu)更為清晰,java代碼程度也更為獨(dú)立,能夠?qū)⑦@些代碼直接編譯與可重用組件,將java程序與HTML頁面的參數(shù)傳遞機(jī)制進(jìn)行規(guī)范化處理后,可以由多個設(shè)計人員對java程度與HTML頁面設(shè)計進(jìn)行獨(dú)立開發(fā),是企業(yè)級大項目的首選方法,更適宜于分工合作,提高開發(fā)效率。
在運(yùn)用JSP設(shè)計動態(tài)網(wǎng)頁時,先建立一個能夠運(yùn)行JSP的計算機(jī)運(yùn)行環(huán)境,即安裝一個能夠支持JSP的應(yīng)用服務(wù)器或WEB服務(wù)器,或者直接在WEB服務(wù)器上安裝一個JSP引擎。本次設(shè)計所使用的WEB服務(wù)器是JSWDK1.0.1,該服務(wù)器能夠支持JSP,不再需要另外安裝一個相應(yīng)的JSP引擎,只需要在JSD支持下運(yùn)行即可,本次使用的是java SE 8.0,內(nèi)部加載了jbuilder。以在線注冊動態(tài)網(wǎng)頁設(shè)計為例,采用以下兩種方法來實(shí)現(xiàn)這一動態(tài)網(wǎng)頁。[6-7]
這種方法就是在在JSP頁面直接嵌入一個java程序,對后臺數(shù)據(jù)庫進(jìn)行訪問,JSP能夠通過JDBC連接后臺數(shù)據(jù)庫。第1步,加載一個可用的JDBA驅(qū)動程序如ODBA橋驅(qū)動程序;第2步,與數(shù)據(jù)庫建立一個連接對象,這一步可以DriverManager服務(wù)中的GetConnection這一方法實(shí)現(xiàn);第3步,建立一個語句對象,選擇Connection對象下的createStatement這一方法構(gòu)建;第四步,通過Statement對象,執(zhí)行Insert into、Delete、Select等SQL命令,如,執(zhí)行Select命令時,就會返回到1個對應(yīng)的結(jié)果集對象中。
這種方法是先通過JSP頁面下的AddUser2.jsp獲取客戶端中提交的信息,再建立一個
JSP是一種以java servlet技術(shù)為基礎(chǔ),經(jīng)過大量改進(jìn)后構(gòu)建的一種理想的web應(yīng)用開發(fā)框架,是一種開放性高、跨平臺性強(qiáng)的結(jié)構(gòu),能夠使編譯后的動態(tài)網(wǎng)頁程序在不影響JSP基本程序的同時,在WEB服務(wù)器、多個操作平臺上、其他組件中簡單地實(shí)現(xiàn)升級或切換,是一種更為適應(yīng)當(dāng)前web應(yīng)用程序需求的技術(shù),基于JSP技術(shù)設(shè)計的動態(tài)網(wǎng)頁程序較ASP、PHP等的執(zhí)行效率更高,維護(hù)管理更為簡單,是未來動態(tài)網(wǎng)頁設(shè)計的主流技術(shù)。