JSP特性及思想的最佳實踐1_第1頁
JSP特性及思想的最佳實踐1_第2頁
JSP特性及思想的最佳實踐1_第3頁
JSP特性及思想的最佳實踐1_第4頁
JSP特性及思想的最佳實踐1_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、jsp最新特性及思想的最佳實踐1作者:dustin marx 著;chessboy 譯 發(fā)文時間:2003.08.19 13:43:19概要:jsp規(guī)范的不斷進展,可用的jsp開發(fā)工具數(shù)量不斷增多,以及jsp技術可涉及 領域的不斷的擴展,促進了基于jsp技術的高維護性能和標準化的網(wǎng)絡應用的開發(fā)。 這篇文章討論了在jsp進展中的一些主要內(nèi)容以及如何更容易的開發(fā)健壯的jsp網(wǎng)絡 應用。這篇文章可以幫助讀者提高應用jsp強大功能的能力,并能夠讓你為將來jsp 的升級做好準備。自從我(原文作者)在2001年底發(fā)表了“jsp最佳實踐”以來,jsp技術已經(jīng)有了 戲劇性的發(fā)展。許多的工具已經(jīng)使得開發(fā)基于js

2、p技術的網(wǎng)頁變的更加容易。在上一 篇我的“最佳實踐”的文章屮所提到的實踐依然適用。然而,隨著新的特性,工具,以 及jsp開發(fā)思想的出現(xiàn)你需要使用更多的最佳實踐來開發(fā)更加平滑的高維護性能的 jsp的應用。這篇文章列岀了一些應用了最重要的新的特性,工具和思想的最佳實踐:開始編寫jsp document.引入jsp編程約定使用正確的范圍(scope)小心的管理“會話”范圍利用 jstl(javaserver pages standard tag library)的特點利用 servlet filers (intercepting filter pattern)的特點創(chuàng)建你的jsp pages的文檔預

3、先編譯jsp網(wǎng)頁和文檔組織文件和目錄以便于容易的開發(fā)和部署小心使用私有的,與供應商特定的特性html 標簽使用 xhtml (extensible hypertext mark叩 language)語法使用 jsp document.不是 jsp pagesjsp規(guī)范支持jsp pages同樣也支持jspdocumento兩者之間主要的區(qū)別是它們 對xml兼容的程度。jsp pages使用傳統(tǒng)的或者說是“速記(shorthand) ”語法,而jsp document.用的語法完全與xml相兼容。jspdocument.時候被成為是使用了 xml 語法的jsp pageso但是這里我將分別稱它們

4、為jsp pages和jsp document.便加以區(qū) 分?;谝韵聨讉€原因我推薦使用jsp document.1. jsp document.很好組織了 的 xmlhtml(you can easily verify jsp document, as well-formed xml/html)2. 可以使用xml schema來驗證jsp document. 1可以很容易的使用標準的 xml工具來寫和解析3. 可以使用 xslt(extensible stylesheet language transformations)以不同的 form 來編寫 jsp document.具體請看&qu

5、ot;jsp document, nbspwithx s lt, 'hup: 0725moejsp.hunl4. jsp使用了 xml相容include和forward action, custom標簽,因而使得整個 document. xml相容,這樣就提高了編碼的一致性。5jsp document.相對jsp pages需要稍微多一點的開發(fā)規(guī)則,但是帶來的好處是 更加容易閱讀和維持的document.,特別是對于剛剛開始學習jsp的人來說。關于創(chuàng)建jsp document.和其特點的詳細內(nèi)容請參考“write jsps in xml using jsp1.2 (hmp:www.ja

6、vawohjsp document.最大的缺點是沒有與xml相兼容的jsp注釋存在。jsp document.以使用客戶端的注釋(html-/xml-style)或者是嵌入的java注釋。但 是沒有jsp document. <%->而jsp可用的上面的兩種注釋方法都有其自身的缺 點。你可以在得到的網(wǎng)頁中看到客戶端的注釋(通過瀏覽器視圖里面的“查看源文件” 功能),而且要使用java的注釋需要將java代碼直接的寫在jsp document.中。在本文剩下的章節(jié)中,我將使用jsps來代表jsp pages利jsp document,因為我 所討論的最佳實踐同樣的適用這兩種形式的js

7、po使用jsp的編碼規(guī)范無論使用任何一種語言,創(chuàng)建的任何工程,在提高開發(fā),維護,和測試你的軟件的角 度遵循編碼的標準和規(guī)范都是很明智的選擇。讀其他開發(fā)人員的代碼并不簡單而且也 不是愉快的事情。但是,如果所有的開發(fā)人員都遵循同樣的命名規(guī)范和其他的一些約 定的化,閱讀代碼和維護就會使得閱讀代碼対他人和編程人員自己變的容易一些。sun microsytem最近己經(jīng)幫助一些組織來創(chuàng)建這樣的規(guī)范,制定了文檔“code conventions for the javaserver pages technology version 1.x language"可以免費獲得, 參考“resources

8、''(httd:/4avaworld4w-07-2003/iw-0725-morejsp.html)。女1 果你的公司還沒有遵循jsp編程規(guī)范的話,我建議使用這個文檔作為一個起點。你可 以完全的遵照該文檔也可以在其基礎上創(chuàng)建自己的規(guī)范。為對象選擇合適的scopejsp規(guī)范支持四種scope(應用application,會話session,請求request和頁面page), 在jsps中你可以為創(chuàng)建的對象選擇其屮的一種,因為綁定到這些scope的對彖消耗 內(nèi)存,并且在有些時候需要釋放,所以最好選擇適當?shù)膕cope來完成你的任務。應用范圍(application scope )a

9、pplication scope是最為廣泛的一“個范i韋i,應該在必要的時候才采用這種形式。你可 以在非會話相關(sessionawae)的jsps中創(chuàng)建綁定到application的對象(you can create objects bound at application level in jsps that are not session-aware,) 在這種類型 的jsps中可以用應用范圍來存儲數(shù)據(jù)和信息。(so application scope is useful for storing information when using these types of jsps)。你也

10、可以使用綁定到 application 的對彖用來在不同的會話(session)間共享數(shù)據(jù)。當你不需要application范圍的對彖 的時候一定要顯式的刪除它們以便釋放內(nèi)存。會話范圍(session scope)在我的經(jīng)驗中,會話范圍要比應用范圍用的多。會話范圍允許你創(chuàng)建并且將對彖綁定 到一個會話上面。你必須在session-aware的jsps中創(chuàng)建綁定在會話的對象并且使在 同一個會話中所有的jsp和servlet能夠訪問到這些對象。會話范圍常常用在管理安 全驗證和管理多個頁面的狀態(tài)信息。綁定在會話范圍的對象在不需要的時候也要顯示 的刪除。當我計劃將某個類的對彖綁定到會話范圍的時候我通常會

11、使該類可串行化。請求范圍 (request scope)在綁定對象的時候,頁面范圍我用的最多。此類對象只在同一個請求的頁面間有效。 在請求處理完成的時候這些對象將會自動的被釋放。因而不需要顯式的釋放它們,這 樣就沒有了使系統(tǒng)被一些不必要內(nèi)存消耗而拖累的危險。頁面范圍(page scope)當你創(chuàng)建只對當前頁面相關的對象的時候你需要選擇頁面范圍。和請求范圍一樣,綁 定在頁面范圍的對象不要顯式的刪除。我很少在我的jsp應用屮使用“頁面范圍j但 是這是的默認范圍。選擇哪種范圍(scope)需要仔細的選擇創(chuàng)建對彖的范圍來保證有效的利用內(nèi)存,通常我會在剛剛開始的時候 選擇請求范圍,然后在評估是否需要選擇

12、范圍更大的范崔i。仔細的管理會話范圍 前面己經(jīng)提到過,只有在必要的時候才選擇會話范圍并且當這些對象不在需要會話級 訪問的時候需要顯式的去掉對象的其會話范圍。當不使用會話范圍的對象的jsp中你 可以設置頁血的directive的session屬性為false,這樣可以避免管理會話范圍。但是, 很少的網(wǎng)絡應用不需要會話范圍的支持。通常,我使用會話來支持安全機制以及其他 的一些應用需求。盡管一個會在一個可以由你配置的時間后過期,但是在不需要對象 的會話范圍的時候最好顯式的取消它們,而不是依賴會話自動釋放的功能。采用jstl (標準標簽庫)jsp的引入和采納已經(jīng)成為jsp開發(fā)人員的一個最為重要的進步。

13、jstl有時候也稱 為“jsp standard tag library"o在jstl中的t代表的是標簽(tag)而不是模板 (template)。jstl:背景與回顧在我以前的文章里,我提到過jsp開發(fā)人員采納可以得到的自定義標簽庫而不是自己 從頭開始創(chuàng)建。有許多的商業(yè)的或者開源的自定義標簽庫現(xiàn)在已經(jīng)可以加以利用。但 是有一個缺點就是:開發(fā)人員需要在jsp中按照這些白定義標簽庫所特定的格式來應 用這些標簽。jstl的出現(xiàn)解決了這個問題,因為jstl提供了自定義標簽的標準接 口,這些標簽足以滿足jsp開發(fā)人員的一些基本的要求。(the advent of jstl has addre

14、ssed this downside by providing standard interfaces to the custom tags that perform many basic functions jsp developers need.)不同的供應商可能以不同的形式實現(xiàn)這些 jstl標簽,但是jsp開發(fā)人員不要知道實現(xiàn)標簽時的不同點。如果jsp開發(fā)人員使 用 jstl 編寫了 jsp page 或者 jsp document. jsp page 或者 jsp document.該適用所 有的jstl實現(xiàn)方法。有許多有價值的書和一些在線的資源可以去學習jstl。這里 我將主要簡單的

15、介紹jstl的優(yōu)點與特性。jstl的優(yōu)點簡短的說,jstl提供了所有的已經(jīng)公布的自定義標簽庫所有的好處,而且提供標準 化的標簽apio jstl促進了高可維護性和可移植性的pages和document0我列出了 jstl 些特別的特點。1 jstl提供了基于標簽的遍歷,條件以及其他一些功能,這些功能以前或者是 直接在jsp中嵌入代碼來實現(xiàn)的,或者是使用了自己創(chuàng)建的標簽,非標準的標簽庫, 或者是通過使用servlet來代替jsp來實現(xiàn)的。2. jstl 使用了 el (expression language)語法3. 編寫自定義標簽相對其他一些jsp開發(fā)任務來說需要更多的精力與經(jīng)驗ojstl 通

16、過兩種方法來簡化這些步驟:首先,如前所述,jstl能解決很多定制(自定義)的tags 的需要.(jstl handles many common needs for custome tags)。其次,jstl 提供了一 些機制使得編寫你自定義的標簽更簡單,尤其是編寫支持el自定義標簽的時候。具體的jstl特性與優(yōu)點下面簡單的概括jstl4個可用自定義標簽庫中三個標 簽庫的一些優(yōu)點,并且給岀了不推薦使用數(shù)據(jù)庫訪問標簽庫(database access library) 的原因。同樣我也討論了使用el的優(yōu)點。數(shù)據(jù)訪問標簽庫(database access library)jstl提供了數(shù)據(jù)訪問標簽

17、庫,但是我很少用它,因為我強烈的認為不應該在jsp 頁面內(nèi)直接訪問數(shù)據(jù)庫。如果在jsp中直接的訪問數(shù)據(jù)庫將會降低重用,因為數(shù)據(jù)庫 訪問的代碼在使用數(shù)據(jù)庫范圍標簽的jsp頁面外是不可以被訪問到的。在jsps中直 接的進行數(shù)據(jù)庫訪問將會加大表示層與數(shù)據(jù)層之間的耦合。嚴格的分割意味著更好的 模塊化,復用性,以及更容易的滿足表現(xiàn)層和數(shù)據(jù)層之間的規(guī)范(disciplined separation means more modularity, greater opportunity for reuse, and better opportunities for specialization of pres

18、entation and database experts)。.我推薦在 jstl 的其他三種標簽 庫可以滿足jsp開放人員的需求的時候使用這些標簽庫,但是我不推薦使用jstl的 數(shù)據(jù)庫范圍標簽庫 outside of prototypes and the simplest web applicationsojstl 核心標簽庫(jstl core tag library)正像名字一樣,jstl核心標簽庫是在jstl四種標簽庫中最常用的一種。這個 標簽庫提供了對collection的遍歷,條件語句以及其它一些常用的程序結構。jstl核 心標簽庫可以使得jsp開放人員不必編寫他們自己的自定義標簽

19、庫或者直接在jsps 中嵌入java代碼。jstl xml 標簽庫(jstl xml tag library)這個標記庫提供了一些令人贊嘆的且功能強大的xml操縱標簽和xslt轉換標 簽。jstl formatting 標簽庫如果需要在多個國家提供網(wǎng)頁和網(wǎng)址,那么國際化(in(emationalization)對網(wǎng)絡 開發(fā)項目(web development projects)來說是一個很大的挑戰(zhàn)。jstl formatting標簽 庫為此向jsp開發(fā)人員提供了一些自定義標簽,可以支持按照特定的區(qū)域讀寫數(shù)字和 實踐。expression languagejstl以上的自定義標簽庫有兩種類型:r

20、t (traditional request time)自定義標簽 庫和el標簽。因為el要更靈活一些,所有我推薦使用el自定義標簽庫。jstl和其他一些自定義標簽庫因為自定義標簽庫(custom tag library)在jstl引入以前已經(jīng)使用了很長的時間, 許多的個休和組織都已經(jīng)開發(fā)了自定義的標簽庫。這些標簽庫在很大程度上與jstl 的功能都有重復。在大多數(shù)情況下,在考慮實現(xiàn)相同的功能時,我推薦使用jstl而 不是自己開放的自定義標簽庫或者時其他一些可以得到的自定義標簽庫(other publicly available custom tag library)。jstl提供的標準化是一個意義重大的優(yōu)點因 為ap i可以學一次,而后你就可以一貫的使用了。比較struts的標簽庫和jstl標簽庫提供可以獲得一個很好利用這些最佳實踐的 例子 (comparing struts tag libraries and jstl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論