劉 婷
(武警工程大學(xué)信息工程學(xué)院,陜西 西安 710086)
近年來(lái),JSP 研究取得了不錯(cuò)的成績(jī), 在國(guó)內(nèi),JSP目前主要用于政府方面的大型系統(tǒng)開(kāi)發(fā)中, 或一些大型企業(yè)類似于移動(dòng)、網(wǎng)易、曾經(jīng)的人人網(wǎng)。 各大公司對(duì)JSP 專業(yè)開(kāi)發(fā)人才的需求量也是越來(lái)越大[1]。
JSP, 全 稱Java Server Pages, 是Sun 公 司 提 倡 的 一門應(yīng)用于前端開(kāi)發(fā)的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù), 最基本的JSP 界面由HTML 標(biāo)簽與少量的Java 代碼組成,除此之外,指令標(biāo)簽、注釋、JSP 動(dòng)作標(biāo)簽及九大內(nèi)置對(duì)象都是JSP 的組成成分,標(biāo)簽通常以<%開(kāi)頭以%>結(jié)束。JSP 的本質(zhì)是servlet,其主要用途是在Java web 應(yīng)用程序中編寫客戶端界面[2]。
JSP 是基于Java 的動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù),并很好的繼承了Java 語(yǔ)言的一些特性[3]。
1.2.1 跨平臺(tái)
JSP 是基于Java 的,那么Java API 對(duì)于JSP 而言就不是問(wèn)題, 所以JSP 也是跨平臺(tái)的。 良好的跨平臺(tái)特性, 讓JSP 開(kāi)發(fā)的Web 項(xiàng)目完美的應(yīng)用到任何平臺(tái)上。
1.2.2 業(yè)務(wù)代碼分離
基于JSP 開(kāi)發(fā)的Web 項(xiàng)目, 開(kāi)發(fā)人員可以將業(yè)務(wù)處理代碼全部放到JavaBean 中, 從而實(shí)現(xiàn)業(yè)務(wù)與View層分離。JSP 負(fù)責(zé)動(dòng)態(tài)顯示數(shù)據(jù),改變業(yè)務(wù)代碼卻不會(huì)對(duì)JSP 造成任何影響。
1.2.3 組件重用
JSP 推薦使用JavaBean 編寫業(yè)務(wù)組件,這個(gè)封裝的JavaBean 在整個(gè)項(xiàng)目的JSP 頁(yè)面中都可以復(fù)用。
1.2.4 繼承Java Servlet 功能
JSP 算是Servlet 的升級(jí)版本。 在JSP 出現(xiàn)之后,編寫和訪問(wèn)過(guò)程被簡(jiǎn)化了, 不過(guò)JSP 最終仍要編譯成Servlet 來(lái)處理用戶請(qǐng)求,因此JSP 具有Servlet 的所有特性和功能。
1.2.5 預(yù)編譯
用戶第一次使用瀏覽器訪問(wèn)JSP 界面時(shí), 服務(wù)器將對(duì)JSP 頁(yè)面代碼僅執(zhí)行一次編譯并保存, 在用戶下一次訪問(wèn)時(shí), 直接執(zhí)行編譯好的代碼。 這樣不僅節(jié)約了服務(wù)器的CPU 資源,還大大提升了客戶端的訪問(wèn)速度。
客戶端首先發(fā)送訪問(wèn)JSP 頁(yè)面的request 請(qǐng)求,在接收到請(qǐng)求之后JSP Container 會(huì)把訪問(wèn)的.JSP 文件轉(zhuǎn)譯成Servlet(.java 文件),然后產(chǎn)生的源代碼經(jīng)過(guò)編譯,生成.class 文件,并加載到內(nèi)存執(zhí)行,執(zhí)行完成后就會(huì)把響應(yīng)傳給客戶端,生成動(dòng)態(tài)的HTML 文件,即瀏覽器所能看到的界面。
JavaBean 只是一個(gè)普通的Java 類,但是使用它能夠帶來(lái)封裝、重用、可讀的好處,定義一個(gè)JavaBean 便能夠在整個(gè)JSP 乃至整個(gè)項(xiàng)目中重復(fù)使用這個(gè)類,JSP 技術(shù)提供了關(guān)于JavaBean 組件的三個(gè)動(dòng)作元素, 即JSP行為(標(biāo)簽):
(1) 在JSP 頁(yè) 面 中 查 找javaBean 對(duì) 象 或 實(shí) 例 化javaBean 對(duì)象,
(2)設(shè)置javaBean 的屬性,
(3)獲取javaBean 的屬性,
通過(guò)使用三個(gè)標(biāo)簽, 即能查找到在指定的域內(nèi)的指定名稱的JavaBean 對(duì)象,并獲取到相對(duì)應(yīng)的屬性,簡(jiǎn)化了我們?cè)跊](méi)有學(xué)習(xí)三個(gè)標(biāo)簽之前冗長(zhǎng)的代碼量,不僅提高了代碼簡(jiǎn)介度,更是為開(kāi)發(fā)提供了便利。
如果需要編寫一套體系完整的Web 項(xiàng)目, 必然關(guān)聯(lián)到數(shù)據(jù)庫(kù)信息的管理,Java 中連接數(shù)據(jù)庫(kù)的技術(shù)是JDBC,JavaEE 項(xiàng)目中最常用的就是通過(guò)JDBC 驅(qū)動(dòng)程序連接到數(shù)據(jù)庫(kù),執(zhí)行查詢、操作數(shù)據(jù)等。 Java 程序能訪問(wèn)諸如Oracle、Sybase、MS SQL Server 和MS Access 等數(shù)據(jù)庫(kù)。
現(xiàn)階段市面上存在各式各樣的前端語(yǔ)言, 盡管如此,相較于php、asp、Node.js、React 等眾多的開(kāi)發(fā)語(yǔ)言,JSP 仍然具有強(qiáng)大的生命力, 它的通用性讓其成為企業(yè)軟件的開(kāi)發(fā)中頗為不錯(cuò)的選擇。
在訪問(wèn)HTML 靜態(tài)頁(yè)面時(shí), 客戶端使用Web 瀏覽器經(jīng)過(guò)網(wǎng)絡(luò)向服務(wù)器發(fā)出請(qǐng)求,Web 服務(wù)器根據(jù)用戶的請(qǐng)求返回相應(yīng)的信息, 瀏覽器端會(huì)對(duì)收到的信息進(jìn)行渲染解析, 得到顯示效果, 同時(shí)也可以運(yùn)用js/ajax技術(shù)使頁(yè)面更加美觀, 由于這些特效都是借助于瀏覽器完成的,所以服務(wù)器上的內(nèi)容不會(huì)受到影響。
但HTML 也有缺點(diǎn),靜態(tài)頁(yè)面無(wú)法連接數(shù)據(jù)庫(kù),并且由于大量使用js,導(dǎo)致瀏覽器打開(kāi)頁(yè)面時(shí),首先要加載大量的js 文件,占用大量的內(nèi)存,相當(dāng)于把服務(wù)器端的壓力轉(zhuǎn)移到了客戶端, 無(wú)形中降低了用戶的體驗(yàn)度。
JSP 基于HTML 界面,支持所有HTML 標(biāo)簽,是一種動(dòng)態(tài)界面,在動(dòng)態(tài)Web 中,程序依然使用客戶端和服務(wù)端, 客戶端依然使用瀏覽器, 通過(guò)網(wǎng)絡(luò)連接到服務(wù)器上,現(xiàn)在的所有請(qǐng)求都先經(jīng)過(guò)一個(gè)WEB Server 來(lái)處理。
作為一門完全免費(fèi)的開(kāi)源語(yǔ)言,PHP(Hypertext Preprocessor)是一種嵌入在HTML 頁(yè)面中,以C 語(yǔ)言為主、Perl 為輔、 結(jié)合自身特性實(shí)現(xiàn)的一門腳本語(yǔ)言,可以滿足開(kāi)發(fā)人員快速編寫動(dòng)態(tài)頁(yè)面的需求。
在構(gòu)建中小型網(wǎng)站的過(guò)程中,PHP 和MYSQL 一起使用, 具有很大的優(yōu)勢(shì), 所以國(guó)外大多數(shù)主機(jī)系統(tǒng)都配有免費(fèi)的APACHE +PHP +MYSQL。
雖然開(kāi)源語(yǔ)言具有簡(jiǎn)單的語(yǔ)法和豐富的函數(shù)對(duì)開(kāi)發(fā)頗為有利,但天生的結(jié)構(gòu)缺陷導(dǎo)致了PHP 不適于編寫比中小型業(yè)余網(wǎng)站更大的網(wǎng)站[4]。
從整體來(lái)說(shuō),PHP 更傾向于中小軟件的開(kāi)發(fā),如果硬套在大型的項(xiàng)目上, 后期維護(hù)的過(guò)程中命名的問(wèn)題將是一大軟肋, 而JSP 更適用于大型系統(tǒng)。 其次PHP對(duì)數(shù)據(jù)庫(kù)接口的提供并不統(tǒng)一, 如果將來(lái)要進(jìn)行數(shù)據(jù)移植那么統(tǒng)一數(shù)據(jù)庫(kù)接口就是一大難題。 而JSP 沒(méi)有這種缺陷, 通過(guò) EJB/CORBA 以及眾多廠商的Application Server 獲得結(jié)構(gòu)支持。
如果說(shuō)PHP 是未來(lái)編程的福音, 簡(jiǎn)化了編程的難度,那么JSP 將會(huì)是救世之星,只有具有較好的前瞻性和拓展性, 整體布局和協(xié)同能力強(qiáng), 才能在未來(lái)的發(fā)展中不斷進(jìn)步,走向最終的成功。
ASP(Active Server Pages)是Windows 系統(tǒng)自帶的腳本語(yǔ)言。
ASP +COM +SQLServer 是Windows 平 臺(tái) 開(kāi) 發(fā) 中 不 錯(cuò)的選擇, 而且是Windows 系統(tǒng)和SQLServer 都有圖形界面,易于觀察,相對(duì)APACHE 和MYSQL 開(kāi)發(fā)友好度更高, 對(duì)于不重視知識(shí)產(chǎn)權(quán)的國(guó)家來(lái)說(shuō)也算是一種福音。
不過(guò),ASP 的簡(jiǎn)單也意味著單一性,在逐漸繁瑣的需求中開(kāi)發(fā)人員發(fā)現(xiàn)單純使用ASP 已經(jīng)很難完成需求,和PHP 一樣,ASP 簡(jiǎn)單易維護(hù),是小型web 應(yīng)用程序的理想選擇。
但是,由于基于ActiveX 控件技術(shù),ASP 只能作用于微軟的操作系統(tǒng)之上,雖然經(jīng)過(guò)改良,ASP 可以通過(guò)第三方提供的組件和服務(wù)來(lái)實(shí)現(xiàn)跨平臺(tái)開(kāi)發(fā), 但是ActiveX 對(duì)象必須事先放置于所選擇的平臺(tái)中。 這種不支持跨平臺(tái)系統(tǒng)開(kāi)發(fā)的致命缺點(diǎn)使ASP 很難開(kāi)發(fā)和維護(hù)大型項(xiàng)目。
從總體上說(shuō),JSP 和ASP 從技術(shù)角度來(lái)講有很多異曲同工之妙。 首先,兩者都是基于Web 的應(yīng)用程序的技術(shù)環(huán)境支持, 以實(shí)現(xiàn)動(dòng)態(tài)交互式網(wǎng)頁(yè)創(chuàng)建, 其次兩者都可以為程序開(kāi)發(fā)人員提供一種邏輯上將應(yīng)用程序的編制與自帶組件設(shè)計(jì)網(wǎng)頁(yè)分離的技術(shù)。 但是雖然JSP 技術(shù)和ASP 在許多方面都很相似, 但兩者之間的本質(zhì)區(qū)別仍然非常明顯: 兩者是來(lái)源于不同的技術(shù)規(guī)范組織, 其實(shí)現(xiàn)的基礎(chǔ)Web 服務(wù)器平臺(tái)要求也不相同。
最終, 基于Java 的JSP 因其能夠廣泛支持不同提供商提供的工具的優(yōu)點(diǎn)而略勝一籌,對(duì)所有Web 服務(wù)器和應(yīng)用程序的服務(wù)的友好兼容, 讓其成為開(kāi)發(fā)人員在開(kāi)發(fā)中的選擇最佳。
JSP 的各種優(yōu)點(diǎn)不僅提高了開(kāi)發(fā)人員的工作效率,也會(huì)使網(wǎng)站的網(wǎng)頁(yè)具有更好的安全性和可移植性。 所以JSP 具有非常良好的發(fā)展前景,JSP 的開(kāi)發(fā)人員、所設(shè)計(jì)的網(wǎng)站也會(huì)越來(lái)越多。