【文章內(nèi)容簡介】
~100 的局域網(wǎng)環(huán)境中,兩層模型的確是個不錯的方案。由于該模型中,所有的用戶連接都是被保持的,也就是說即使在空閑狀態(tài),連接依然存在。所以,用戶的并發(fā)請求數(shù)量有限的。為了解決這個限制,使得成千上萬的用戶可以被無 顧慮地添加,我們最好選用三層模型。 B/S 結(jié)構(gòu),即 Browser/Server(瀏覽器 /服務(wù)器)結(jié)構(gòu),是隨著 Inter 技術(shù)的興起,對C/S 結(jié)構(gòu)的一種變化或者說是改進(jìn)的結(jié)構(gòu)。用戶界面完全通過瀏覽器實現(xiàn),一部分事務(wù)邏輯在前端實現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實現(xiàn),形成三層結(jié)構(gòu),是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。 B/S 模型結(jié)構(gòu)圖 如圖 11 所示。 計算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)士學(xué)位論文 第 4 頁 W W W . B r o w s e rI n t e r n e tD a t a B a s e S e r v e rI n t e r n e tW W W S e r v e rS e r v e r P r o g r a mC G I / F a s t C G I / J A V A S e r v l e t s / A S P / J S PH T T P R e q u e s tH T M LR e m o r t U s e r ` s C o m p u t e rI n p u tH T M LS Q L Q u e r yD a t aF i r s t S e r v e r M a c h i n eS e c o n d S e r v e r M a c h i i n e圖 1 1 B / S 模 型 結(jié) 構(gòu) 圖 從上圖可見,這種結(jié)構(gòu)的一個重要的特點是,用戶可以完全不需要安裝客戶端軟件,當(dāng)然也不需要擔(dān)心任何軟件升級和不兼容 等任何客戶端所遇到的問題。相比之下, B/S 模型的優(yōu)點顯而易見,更適合這個網(wǎng)站的構(gòu)建,有利于網(wǎng)站的維護(hù)和擴(kuò)充。 JSP技術(shù)發(fā)展背景 Web技術(shù)的迅猛發(fā)展正推動 Inter 上信息服務(wù)類的進(jìn)步。 WWW 服務(wù)的基礎(chǔ)是 HTML語言。這個系統(tǒng)模塊中用到的 JSP 技術(shù)是在 HTML 語言的基礎(chǔ)上使用腳本語言對網(wǎng)頁的對象模型進(jìn)行編程。 JSP 全稱 JavaServerPages,它是由 Sun Microsystems 公司提出、許多公司參與建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。它誕生在 1999 年 6 月 1 日。目前國內(nèi)外已經(jīng)在廣泛地使用 JSP。隨著 JAVA語言得到普及,越來越多的公司開始關(guān)注 JSP 的前景。 傳統(tǒng)的動態(tài)網(wǎng)頁制作包括 CGI、 ASP、 JSP 三種,而 JSP 具有明顯的優(yōu)勢。使用 CGIBINJ接口是一個最早的動態(tài) WEB頁面問題的解決方案。缺點, CGI 程序必須從 CGI 接口讀入一長串的字符串,再從字符串中取得所需要的數(shù)據(jù)并加以處理。過程十分繁瑣。另一個缺點,除了 Perl 是解釋語言外,其他都是編譯式的語言。每次修改后,都必須重新編譯一次,這給開發(fā)人員帶來麻煩,增加了工作量。 ASP 和 JSP 都能取代 CGI 使網(wǎng)站建設(shè)和發(fā)展變得簡單快捷。盡管 JSP 技術(shù)和 ASP 在許多方面都有相似的,但仍然存在很多不同之處,其中最 計算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)士學(xué)位論文 第 5 頁 本質(zhì)上的區(qū)別在于:兩者是來源于不同的技術(shù)規(guī)范組織,其實現(xiàn)的基礎(chǔ), WEB 服務(wù)器平臺要求不相同。 作為 Java 平臺的一部分, JSP 擁有 Java 編程語言“一次編寫,各處運(yùn)行”的特點。一次寫入,之后,可以運(yùn)行在任何具有符合 JavaTM 語法結(jié)構(gòu)的環(huán)境。取代之過去單一平臺開發(fā)。 ASP 主要工作環(huán)境是微軟的 IIS應(yīng)用程序結(jié)構(gòu),又因 Activex對象具有平臺特性,所以ASP 技術(shù)不能很容易地實現(xiàn)在跨平臺的 WEB 服務(wù)器的工作。 從開發(fā)人員的角度來看其區(qū)別在于: ASP 僅支持組 件對象模型 COM,而 JSP 技術(shù)提供的組件都是基于 JavabeansTM 技術(shù)或 JSP 標(biāo)簽庫。 JSP 標(biāo)簽可擴(kuò)充性。 JSP 技術(shù)能夠使用開發(fā)者擴(kuò)展 JSP 標(biāo)簽, JSP 開發(fā)者能定制標(biāo)簽庫,減少對腳本語言的依賴 生成可重用的組件。 JSP 基于組件的技術(shù)方法加速了總體開發(fā)過程。 JSP 組件( Javabeans,或定制的 JSP 標(biāo)簽)是跨平臺可重用的。 Javabeans 組件可以訪問數(shù)據(jù)庫,并能以分布式系統(tǒng)模式工作于 UNIX 和 WINDOWS 平臺。 易于維護(hù)性。 基于 JSP 技術(shù)的應(yīng)用程序比基于 ASP 的應(yīng)用程序易于維護(hù)和管理。 JSP突出的組件技術(shù)使修改內(nèi)容而不影響邏輯或修改邏輯而不影響內(nèi)容變得很容易實現(xiàn)。 如上的比較不難看出, JSP 技術(shù)編寫的程序運(yùn)用要更加靈活,可擴(kuò)展性更強(qiáng)。 Java語言的特點 Java 語言具有以下特點。 1. 一次編寫,多處運(yùn)行 這句話十分形象的闡述了 Java 的平臺無關(guān)性,而且 Java程序員也一直以此為精神指南,也是 Java 之所以能夠受到程序設(shè)計師們喜愛的原因之一。 2. 簡單 純面向?qū)ο蟮奶匦?,再加上眾多類庫的支持,使?Java 開發(fā)各式各樣的應(yīng)用程序,可以說是易如反掌。除此之外,不論在調(diào)試或是程序修改、增加新功能方面,因為對 象的特性,使得這些維護(hù)也變得非常容易。 3. 安全性 Java 新增的大部分功能都是針對安全性的問題考慮的, Java 甚至可以對于不同的安全需求而設(shè)定 Java應(yīng)用程序的安全登記。原則上一個未經(jīng)您允許的 Java 程序,是不可能傷及你的系統(tǒng)一根汗毛的。 4. Unicode Java 字符采用 16位的 Unicode 編碼,使得 Java 的程序在不同語言的平臺上都編寫和執(zhí)行。簡單地說,你可以把程序中的變量、類名稱使用中文來表示(使用其它文字也可以,但是不能使用特殊符號),當(dāng)你的程序移植到其他語言平臺時,還是可以正常地執(zhí)行。 Java 也是目 前所有電腦語言當(dāng)中,唯一天生使用 Unicode 的語言。 5. 網(wǎng)絡(luò) Java 可以說是借助互聯(lián)網(wǎng)而重生的,自然對于具有網(wǎng)絡(luò)功能程序的編寫,也是非常容易的。不論是一般互聯(lián)網(wǎng)的程序 Socket、 Email,還是服務(wù)器網(wǎng)頁的程序 Servlets、 JSP,甚至 計算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)士學(xué)位論文 第 6 頁 分布式網(wǎng)絡(luò)程序 CORBA等的相關(guān)套件支持,可以說是非常豐富,使用起來也是非常容易。 6. 垃圾回收機(jī)制 Garbage Collection 是由 JVM 協(xié)助我們的程序?qū)?nèi)存做動態(tài)的管理,你的程序需要多少內(nèi)存、哪些對象的內(nèi)存已經(jīng)不使用了,需要歸還給系統(tǒng),這些繁瑣而且危險的工作全 部交由JVM 去幫我們管理,讓我們能夠更專心的寫程序,不需要擔(dān)心內(nèi)存的問題,而內(nèi)存的統(tǒng)一管理,對于跨平臺也有相當(dāng)?shù)膸椭? 7. 異常處理 為了使 Java 程序更加安全、穩(wěn)定,那么程序隨機(jī)應(yīng)變的能力就必須好。 Java 引入了異常處理機(jī)制,能夠在程序中比較可能有異常情況產(chǎn)生的地方,加上相對應(yīng)的處理,讓程序不至于因為土法的錯誤,造成執(zhí)行中斷或者是當(dāng)機(jī)的情況。異常處理也讓用戶更能控制整個程序執(zhí)行的流程,也使得程序的設(shè)計更為嚴(yán)謹(jǐn)。 關(guān)于 Java Web Java Web 應(yīng)用的核心技術(shù)是 JSP( Java Server Pages)技術(shù)和 Servlet 技術(shù), JSP 是由 SUN公司倡導(dǎo)的,許多公司參與一起建立的動態(tài)王爺技術(shù)標(biāo)準(zhǔn),是基于 Java Servlet 和整個 Java體系的 Web開發(fā)技術(shù)。它在動態(tài)網(wǎng)頁的建設(shè)中有著強(qiáng)大而特別的功能,由于具有跨平臺性、易維護(hù)性、易管理性等優(yōu)點,因此,是最有發(fā)展前途的網(wǎng)頁技術(shù)。 JSP 技術(shù)實現(xiàn)了動態(tài)頁面與靜態(tài)頁面的分離,脫離了硬件平臺的束縛,它的一次編譯到處運(yùn)行的方式大大提高了執(zhí)行效率,逐漸成為因特網(wǎng)上的主流開發(fā)工具。 Servlet 是運(yùn)行在Web 應(yīng)用服務(wù)器上的 Java 程序,它是一個中間層、負(fù)責(zé)連接來自 Web 瀏覽器或其他 HTTP客戶程序的請求和 HTTP 服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序。 Servlet 的作用是讀取客戶發(fā)送的顯示數(shù)據(jù)、讀取由瀏覽器發(fā)送的隱藏式請求數(shù)據(jù)、向客戶發(fā)送顯示數(shù)據(jù)(即文件)及發(fā)送隱藏式 HTTP 響應(yīng)數(shù)據(jù)等。 圖 12 為 Java Web 應(yīng)用的結(jié)構(gòu)功能圖。 J S P 頁自 定 義 標(biāo) 簽 庫X M L 文 件視 圖 ( V i e w )調(diào) 用調(diào) 用控 制 器( C o n t r o l l e r )模 型 ( M o d e l )X M L 配 置 文 件S e r v l e tJ a v a 實 用 類J a v a B e a n組 件E J B 組 件或或圖 1 2 J a v a W e b 應(yīng) 用 的 結(jié) 構(gòu) 功 能 圖 計算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)士學(xué)位論文 第 7 頁 Servlet 與 JSP組件簡介 Servlet 組件(服務(wù)器小程序)是一個與協(xié)議無關(guān)的跨平臺的服務(wù)器組件。它被集成到服務(wù)器中,可以實現(xiàn)網(wǎng)絡(luò)遠(yuǎn)程動態(tài)加載。現(xiàn)在普遍使用的版本為 Servlet API ,應(yīng)用范圍主要有處理 HTML表單、允許多人之間的合作及請求轉(zhuǎn)發(fā)等。它接收 Web請求,并進(jìn)行處理,然后將請求發(fā)送到 Web 服務(wù)器,最后將服務(wù)器的響應(yīng)回送到瀏覽器。 Servlet工作流程如圖 13 所示。 瀏 覽 器S e r v l e tS e r v l e t 容 器請 求響 應(yīng)H t t p S e r v l e t R e q u e s t 對 象H t t p S e r v l e t R e s p o n s e 對 象圖 1 3 S e r v l e t 的 工 作 流 程 圖 JSP 在本質(zhì)上就是 Servlet,只是這兩者的創(chuàng)建方式不一樣。 Servlet 中的代碼是又 Java程序代碼構(gòu)成的,它主要是對流程的控制以及對事物的處理,而通過 Servlet 來生成動態(tài)網(wǎng)頁不是很直觀; JSP 主要由 HTML元素(或者 XML)與 Java代碼的結(jié)合,以及加入其中的JSP 標(biāo)記,可以方便地編寫動態(tài)網(wǎng)頁。 JSP 的工作流程如圖 14 所示。 W e b 容 器J S P 組 件生 成 S e r v l e t類 源 代 碼編 譯 的 S e r v l e t類客 戶 端 瀏 覽 器發(fā) 送 響 應(yīng)發(fā) 送 請 求圖 1 4 J S P 工 作 流 程 圖 在圖 14 中, JSP 最后被編譯成了一個 Servlet,然后通過 Servlet 發(fā)送響應(yīng)與 Web 服務(wù) 計算機(jī)科學(xué)與技術(shù)專業(yè) 學(xué)士學(xué)位論文 第 8 頁 器進(jìn)行交互。 JavaBean 在 Java Web 組件的應(yīng)用 JavaBean 是 Java Web 應(yīng)用系統(tǒng)設(shè)計中的重要組成部分之一,它封裝屬性和方法,使之成為具有獨立功能、可重復(fù)使用的并且與其他空間通信的類。 JSP 功能強(qiáng)大的一個方面是體現(xiàn)在能夠使用 JavaBean。開發(fā)者可以將可重用的代碼部分(例如數(shù)據(jù)庫連接的方法)和頁面邏輯部分寫入 JavaBean 中,還可以通過使用 JavaBean 來減少在 JSP 頁面中腳本語言的使用率。這樣可以使得 JSP 頁面更加整潔、更容易維護(hù)、更容易被非開發(fā)人員接受。在 JSP 文件中,可以通過專門的標(biāo)簽來定義或訪問 JavaBean,包括設(shè)置 Bean 屬性值、讀取 Bean 屬性值和請求時包含其他資源(例如 jsp:userBean、jsp:setProperty等)。 自定義標(biāo)簽與 JSTL標(biāo)簽庫 當(dāng)開發(fā)者使用一段時間的 JSP 后,會發(fā)現(xiàn)這種將 Java 代碼與 HTML 標(biāo)記混合的方法不完善,主要體現(xiàn)在以下兩個方面。 頁面中 Java 代碼轉(zhuǎn)化為 Servlet 后,在運(yùn)行時,可能會導(dǎo)致一些看不到的錯誤。由于在 JSP 頁面中嵌入 Java代碼比較凌亂,因此,頁面中的 Java 代碼不容易維護(hù)。 標(biāo)簽技術(shù)可以解決上述問題,它是在 JSP ,支持用戶在 JSP文件中自定義標(biāo)簽以及 JSTL標(biāo)簽庫,這些可重用的標(biāo)簽?zāi)軌蛱幚韽?fù)雜的邏輯運(yùn)算和事務(wù),甚至可以處理定義 JSP 網(wǎng)頁的輸出內(nèi)容和格式。自定義 JSP 標(biāo)簽可以使 JSP 代碼更加簡潔,有助于將 JSP 文件中的 Java 程序代碼分離出去,使 JSP 文件側(cè)重于提供 HTML表示層數(shù)據(jù)。 在 Struts中提供了 5 種強(qiáng)大的標(biāo)簽,分別為: Bean標(biāo)簽、 HTML 標(biāo)簽、 Logic 標(biāo)簽、 Nested標(biāo)簽和 Titles 標(biāo)簽。熟練使用這些標(biāo)簽,可以簡化開發(fā)交互的、用于表單的 Web應(yīng)用的過程。 JSF技術(shù)簡介 JSF( Java Server Faces)技術(shù)為構(gòu)建 Java 服務(wù)應(yīng)用的用戶接口進(jìn)行了簡化。通過使用Java Server Page 提供的定義良好的編程模型,不同級別的用戶可以快捷構(gòu)建。 其實 JSF 和 Struts 是一樣的,也是快速開發(fā) Web 應(yīng)用的一個框架。但是它改變了以往基于 Web 的 RequestResponse 處理機(jī)制,采用了類似 Java Swing的事件驅(qū)動處理機(jī)制,這就為在 Java平臺上快速開發(fā)