亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

MoreJSP編程實踐(上)

2019-11-18 16:21:58
字體:
來源:轉載
供稿:網友

  翻譯前的話:
最近瑣事較多,翻譯的不好,大家多多包涵。以后一定努力?。?!

  概要:
  隨著jsp規范的不斷進展,以及可用的jsp開發工具數量不斷增多,以及jsp技術可涉及領域的不斷的擴展,促進了基于jsp技術的高維護性能和標準化的網絡應用的開發。這篇文章討論了在jsp進展的一些主要的內容以及這些是如何更加容易的開發處健壯的JSP網絡應用。
這篇文章的最佳實踐將能夠幫助應用JSP強大的功能以及能夠讓你為將來JSP的升級做好準備。

第一頁(共4頁)
  自從我(原文作者)在2001年底發表了“JSP最佳實踐”以來,JSP技術已經有了戲劇般的發展。許多的工具已經使得開發基于JSP技術的網頁變的更加容易。在上一篇我的“最佳實踐”的文章中所提到的實踐依然適用。然而,隨著新的特性,工具,以及JSP開發思想的出現你需要使用更多的最佳實踐來開發更加平滑的高維護性能的JSP的應用。這篇文章列出了一些應用了最重要的新的特性,工具和思想的最佳實踐:
l 開始編寫JSP document.
l 引入JSP編程約定
l 使用正確的范圍(Scope)
l 小心的管理“會話”范圍
l 利用JSTL(javaServer Pages Standard Tag Library)的特點
l 利用servlet filers(Intercepting Filter pattern)的特點
l 創建你的Jsp pages的文檔
l 預先編譯JSP網頁和文檔
l 組織文件和目錄以便于容易的開發和部署
l 小心使用私有的,與供應商特定的特性
l Html標簽使用XHTML(Extensible HyperText Markup Language)語法
使用JSP document.不是JSP pages
    
    JSP規范支持JSP pages同樣也支持JSP document.。兩者之間主要的區別是它們對xml兼容的程度。JSP pages使用傳統的或者說是“速記(shorthand)”語法,而JSP document.用的語法完全與XML相兼容。JSP document.時候被成為是使用了XML語法的JSP pages。但是這里我將分別稱它們為JSP pages和JSP document.便加以區分。

    基于以下幾個原因我推薦使用JSP document.
l JSP document.很好組織了的XML/HTML(You can easily verify JSP document. as well-formed XML/HTML)
l 可以使用XML Schema來驗證JSP document. l 可以很容易的使用標準的XML工具來寫和解析
l 可以使用XSLT(Extensible Stylesheet Language Transformations)以不同的form來編寫JSP document.具體請看“JSP document.nbspwith XSLT” http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp.html?#sidebar1
l JSP使用了XML相容include和forward action,custom標簽,因而使得整個document.XML相容,這樣就提高了編碼的一致性。
l JSP document.相對JSP pages需要稍微多一點的開發規則,但是帶來的好處是更加容易閱讀和維持的document.,特別是對于剛剛開始學習JSP的人來說。
    
    關于創建JSP document.和其特點的詳細內容請參考“Write JSPs in XML Using JSP1.2”(http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp.html?#resources)
JSP document.最大的缺點是沒有與XML相兼容的JSP注釋存在。JSP document.以使用客戶端的注釋(HTML-/XML –style)或者是嵌入的java注釋。但是沒有JSP document.<%--  --> 而JSP可用的上面的兩種注釋方法都有其自身的缺點。你可以在得到的網頁中看到客戶端的注釋(通過瀏覽器視圖里面的“查看源文件”功能),而且要使用java的注釋需要將java代碼直接的寫在JSP document.中。

    在本文剩下的章節中,我將使用JSPs來代表JSP pages和JSP document.,因為我所討論的最佳實踐同樣的適用這兩種形式的JSP。

    使用JSP的編碼規范
    無論使用任何一種語言,創建的任何工程,在提高開發,維護,和測試你的軟件的角度遵循編碼的標準和規范都是很明智的選擇。讀其他開發人員的代碼并不簡單而且也不是愉快的事情。但是,如果所有的開發人員都遵循同樣的命名規范和其他的一些約定的化,閱讀代碼和維護就會使得閱讀代碼對他人和編程人員自己變的容易一些。


    Sun Microsytem 最近已經幫助一些組織來創建這樣的規范,制定了文檔“Code Conventions for the JavaServer Pages Technology Version 1.x Language”可以免費獲得,參考“Resources”(http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp.html?#resources)。如果你的公司還沒有遵循JSP編程規范的話,我建議使用這個文檔作為一個起點。你可以完全的遵照該文檔也可以在其基礎上創建自己的規范。

   為對象選擇合適的Scope
     JSP 規范支持四種scope(應用application,會話session,請求request和頁面page),在JSPs中你可以為創建的對象選擇其中的一種,因為綁定到這些scope的對象消耗內存,并且在有些時候需要釋放,所以最好選擇適當的scope來完成你的任務。

    應用范圍(Application scope)
    Application scope 是最為廣泛的一個范圍,應該在必要的時候才采用這種形式。你可以在非會話相關(session-aware)的JSPs中創建綁定到application的對象(You can create objects bound at application level in JSPs that are not session-aware,)在這種類型的JSPs中可以用應用范圍來存儲數據和信息。( so application scope is useful for storing information when using these types of JSPs)。你也可以使用綁定到application的對象用來在不同的會話(session)間共享數據。當你不需要application范圍的對象的時候一定要顯式的刪除它們以便釋放內存。

    會話范圍(session scope)
    在我的經驗中,會話范圍要比應用范圍用的多。會話范圍允許你創建并且將對象綁定到一個會話上面。你必須在session-aware的JSPs中創建綁定在會話的對象并且使在同一個會話中所有的JSP和servlet能夠訪問到這些對象。會話范圍常常用在管理安全驗證和管理多個頁面的狀態信息。綁定在會話范圍的對象在不需要的時候也要顯示的刪除。當我計劃將某個類的對象綁定到會話范圍的時候我通常會使該類可串行化。

    請求范圍(request scope)
    在綁定對象的時候,頁面范圍我用的最多。此類對象只在同一個請求的頁面間有效。在請求處理完成的時候這些對象將會自動的被釋放。因而不需要顯式的釋放它們,這樣就沒有了使系統被一些不必要內存消耗而拖累的危險。

    頁面范圍(page scope)
    當你創建只對當前頁面相關的對象的時候你需要選擇頁面范圍。和請求范圍一樣,綁定在頁面范圍的對象不要顯式的刪除。我很少在我的JSP應用中使用“頁面范圍”,但是這是<jsp:useBean>的默認范圍。

    選擇哪種范圍(scope)
    需要仔細的選擇創建對象的范圍來保證有效的利用內存,通常我會在剛剛開始的時候選擇請求范圍,然后在評估是否需要選擇范圍更大的范圍。
  
   第二頁(共4頁)
    仔細的管理會話范圍
    前面已經提到過,只有在必要的時候才選擇會話范圍并且當這些對象不在需要會話級訪問的時候需要顯式的去掉對象的其會話范圍。當不使用會話范圍的對象的JSP中你可以設置頁面的directive的session屬性為false,這樣可以避免管理會話范圍。但是,很少的網絡應用不需要會話范圍的支持。通常,我使用會話來支持安全機制以及其他的一些應用需求。盡管一個會在一個可以由你配置的時間后過期,但是在不需要對象的會話范圍的時候最好顯式的取消它們,而不是依賴會話自動釋放的功能。
  
    采用JSTL(標準標簽庫)
    JSP的引入和采納已經成為JSP開發人員的一個最為重要的進步。JSTL有時候也稱為“JSP Standard Tag Library”。在JSTL中的T代表的是標簽(Tag)而不是模板(Template)。
    
    JSTL:背景與回顧
    在我以前的文章里,我提到過JSP開發人員采納可以得到的自定義標簽庫而不是自己從頭開始創建。有許多的商業的或者開源的自定義標簽庫現在已經可以加以利用。但是有一個缺點就是:開發人員需要在JSP中按照這些自定義標簽庫所特定的格式來應用這些標簽。JSTL的出現解決了這個問題,因為JSTL提供了自定義標簽的標準接口,這些標簽足以滿足JSP開發人員的一些基本的要求。(The advent of JSTL has addressed this downside by PRoviding standard interfaces to the custom tags that perform many basic functions JSP developers need.) 不同的供應商可能以不同的形式實現這些JSTL標簽,但是JSP開發人員不要知道實現標簽時的不同點。
如果JSP開發人員使用JSTL編寫了JSP page或者JSP document.JSP page或者JSP document.該適用所有的JSTL實現方法。
有許多有價值的書和一些在線的資源可以去學習JSTL。這里我將主要簡單的介紹JSTL的優點與特性。

    JSTL的優點
    簡短的說,JSTL提供了所有的已經公布的自定義標簽庫所有的好處,而且提供標準化的標簽API。JSTL促進了高可維護性和可移植性的pages和document.。我列出了JSTL一些特別的特點。
l JSTL提供了基于標簽的遍歷,條件以及其他一些功能,這些功能以前或者是直接在JSP中嵌入代碼來實現的,或者是使用了自己創建的標簽,非標準的標簽庫,或者是通過使用Servlet來代替JSP來實現的。
l JSTL使用了EL(eXPression language)語法
l 編寫自定義標簽相對其他一些JSP開發任務來說需要更多的精力與經驗。JSTL通過兩種方法來簡化這些步驟:首先,如前所述,jstl能解決很多定制(自定義)的tags的需要.(JSTL handles many common needs for custome tags)。其次,JSTL提供了一些機制使得編寫你自定義的標簽更簡單,尤其是編寫支持EL自定義標簽的時候。

    具體的JSTL特性與優點
    下面簡單的概括JSTL4個可用自定義標簽庫中三個標簽庫的一些優點,并且給出了不推薦使用數據庫訪問標簽庫(database access library)的原因。同樣我也討論了使用EL的優點。

數據訪問標簽庫(Database access library)
JSTL提供了數據訪問標簽庫,但是我很少用它,因為我強烈的認為不應該在JSP頁面內直接訪問數據庫。如果在JSP中直接的訪問數據庫將會降低重用,因為數據庫訪問的代碼在使用數據庫范圍標簽的JSP頁面外是不可以被訪問到的。在JSPs中直接的進行數據庫訪問將會加大表示層與數據層之間的耦合。嚴格的分割意味著更好的模塊化,復用性,以及更容易的滿足表現層和數據層之間的規范(Disciplined separation means more modularity, greater opportunity for reuse, and better opportunities for specialization of presentation and database experts)。.我推薦在JSTL的其他三種標簽庫可以滿足JSP開放人員的需求的時候使用這些標簽庫,但是我不推薦使用JSTL的數據庫范圍標簽庫outside of prototypes and the simplest Web applications。

JSTL 核心標簽庫(JSTL core tag library)
正像名字一樣,JSTL核心標簽庫是在JSTL四種標簽庫中最常用的一種。這個標簽庫提供了對collection的遍歷,條件語句以及其它一些常用的程序結構。JSTL核心標簽庫可以使得JSP開放人員不必編寫他們自己的自定義標簽庫或者直接在JSPs中嵌入Java代碼。
JSTL XML 標簽庫(JSTL XML tag library)
這個標記庫提供了一些令人贊嘆的且功能強大的XML操縱標簽和XSLT轉換標簽。

JSTL formatting 標簽庫
如果需要在多個國家提供網頁和網址,那么國際化(internationalization)對網絡開發項目(web development projects)來說是一個很大的挑戰。JSTL formatting標簽庫為此向JSP開發人員提供了一些自定義標簽,可以支持按照特定的區域讀寫數字和實踐。

Expression Language
JSTL以上的自定義標簽庫有兩種類型:RT(traditional request time)自定義標簽庫和EL標簽。因為EL要更靈活一些,所有我推薦使用EL自定義標簽庫。
JSTL和其他一些自定義標簽庫

因為自定義標簽庫(custom tag library)在JSTL引入以前已經使用了很長的時間,許多的個體和組織都已經開發了自定義的標簽庫。這些標簽庫在很大程度上與JSTL的功能都有重復。在大多數情況下,在考慮實現相同的功能時,我推薦使用JSTL而不是自己開放的自定義標簽庫或者時其他一些可以得到的自定義標簽庫(other publicly available custom tag library)。JSTL提供的標準化是一個意義重大的優點因為API可以學一次,而后你就可以一貫的使用了。
比較Struts的標簽庫和JSTL標簽庫提供可以獲得一個很好利用這些最佳實踐的例子(Comparing Struts tag libraries and JSTL provides a good example of how to implement this best practice)。Struts提供了MVC框架以外其他的一些優點。其中包括的Struts的自定義標簽庫集合。在JSTL引入之前,Struts的自定義標簽庫已經支持遍歷( iteration)以及條件標簽,但是現在我開始使用JSTL的遍歷和條件標簽而不是Struts里面的標簽。我現在仍然再使用Struts的form標簽,這是因為這個標簽與Struts的表單(form)緊密的聯系在一起,而且在JSTL沒有相對應的標簽可用。
比較其他的一些自定義標簽庫和JSTL標簽庫,上面的討論也是適用的。如果JSTL標簽庫可以完全的支持同樣的功能的話,應該使用標準的JSTL標簽。當然如果JSTL不支持的話,你就沒有辦法了。在大多數情況下,像我上面討論的Struts標簽和JSTL標簽,通常需要同時使用JSTL和其他一些自定義標簽。

JSTL:最后的補充
關于JSTL更詳細的內容,她的特點,以及如何在你的jsp中應用JSTL請參考“resources” http://www.javaworld.com/javaworld/jw-07-2003/jw-0725-morejsp-p2.html#resources
在“resource”中包含了到“Apache’s Standard Taglib(一個開源的,廣泛使用的JSTL實現)的連接。
Web server的提供商已經開始在他們的web服務器上發布JSTL的實現,JSTL預測將成為最終的JSP2。0規范中的一部分。

matrix開源技術經onjava授權翻譯并發布.
如果你對此文章有任何看法或建議,請到Matrix論壇發表您的意見.
注明: 如果對matrix的翻譯文章系列感興趣,請點擊oreilly和javaworld文章翻譯計劃查看詳細情況
您也可以點擊-chessboy查看翻譯作者的詳細信息.

(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91成人免费观看网站| 亚洲美女在线看| 在线观看日韩av| 黑人极品videos精品欧美裸| 欧美激情在线播放| 日韩欧美极品在线观看| 国产成人在线亚洲欧美| 高清欧美一区二区三区| 亚洲影院在线看| 中文字幕亚洲第一| 97国产一区二区精品久久呦| 中文字幕亚洲二区| 亚洲三级av在线| 伊人久久五月天| 欧美一区二区三区……| 精品国产区一区二区三区在线观看| 欧美激情亚洲另类| 日韩美女av在线免费观看| 亚洲香蕉成人av网站在线观看| 青青草精品毛片| 欧美午夜视频在线观看| 日韩有码在线电影| 日韩经典中文字幕| 亚洲性av网站| 欧美专区国产专区| 日韩视频在线免费| 91精品久久久久久| 日韩小视频在线观看| 97色在线观看| 欧美国产日韩二区| 亚洲免费人成在线视频观看| 欧美日韩在线另类| 国产欧美日韩精品在线观看| 日韩av在线免费| 国产这里只有精品| 亚洲欧美日韩第一区| 欧美性视频在线| 国语自产精品视频在线看一大j8| 欧美午夜xxx| 欧美成人午夜影院| 亚洲第一男人天堂| 日韩精品一区二区三区第95| 久久精品视频99| 亚洲第一区第一页| 国产精品久久久久久久久免费| 亚洲一区久久久| 久久精品国产精品亚洲| 亚洲999一在线观看www| 亚洲人成伊人成综合网久久久| 欧美精品国产精品日韩精品| 欧美裸体xxxx极品少妇软件| 96精品视频在线| 成人免费在线网址| 国产美女精品视频免费观看| 欧美野外wwwxxx| 美女久久久久久久久久久| 久久精品成人动漫| 久久夜色精品亚洲噜噜国产mv| 成人有码在线视频| 97国产成人精品视频| 欧美激情综合色| 国内精品久久久久久| 国产成人一区二区三区| 国产精品欧美日韩一区二区| 最新国产精品拍自在线播放| 欧美午夜激情视频| 日韩精品一区二区三区第95| 国内精品伊人久久| 91丨九色丨国产在线| 精品一区二区三区电影| 北条麻妃99精品青青久久| 午夜精品蜜臀一区二区三区免费| 久久国产精品电影| 久久福利网址导航| 国自在线精品视频| 国产精品久久久久久久美男| 国产精品偷伦一区二区| 亚洲国产91色在线| 国产精品高潮呻吟久久av野狼| 久久久www成人免费精品张筱雨| 91久久综合亚洲鲁鲁五月天| 亚洲视频在线观看| 日本精品在线视频| 国产精品观看在线亚洲人成网| 欧美日韩中文字幕综合视频| 亚洲视频自拍偷拍| 伊人伊成久久人综合网小说| 欧美精品一二区| 欧美区在线播放| 国产日韩精品在线| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美资源在线| 国内偷自视频区视频综合| 欧美午夜片在线免费观看| 久久久免费观看| 亚洲最大成人免费视频| 国产精品一区=区| 91久久精品国产91久久性色| 中文字幕亚洲一区| 黑人巨大精品欧美一区二区免费| 久久黄色av网站| www.xxxx欧美| 中文字幕免费精品一区| 欧美性猛交xxxx乱大交3| 亚洲精选中文字幕| 国产成人精品日本亚洲| 精品久久中文字幕久久av| 欧美综合国产精品久久丁香| 亚洲成人激情在线| 久久精品小视频| 成人黄色生活片| 欧美日韩亚洲网| 亚洲精品国产精品乱码不99按摩| www.xxxx欧美| 国产欧美在线播放| 91av视频在线观看| 欧美做爰性生交视频| 日韩av在线网| 久久99视频精品| 亚洲福利视频久久| 亚洲欧洲美洲在线综合| 国产精品视频999| 日韩av中文字幕在线播放| 18久久久久久| 色系列之999| 国内精品久久久久久影视8| 国产精品久久久久久久7电影| 亚洲欧洲高清在线| 亚洲精品成人久久电影| 日日噜噜噜夜夜爽亚洲精品| 日韩精品视频免费| 亚洲成人网在线观看| 国产美女主播一区| 日本精品一区二区三区在线播放视频| 性色av一区二区三区| 国产精品三级在线| 日韩电影中文字幕| 懂色aⅴ精品一区二区三区蜜月| 日韩欧美在线观看| 红桃视频成人在线观看| 日韩av电影国产| 日本精品中文字幕| 国产精品私拍pans大尺度在线| 综合网中文字幕| 欧美性受xxx| 国产精品69精品一区二区三区| 宅男66日本亚洲欧美视频| 国产精品久久久久久久久久久新郎| 亚洲白虎美女被爆操| 91影院在线免费观看视频| 亚洲精品国产拍免费91在线| 欧美亚洲另类激情另类| 国产精品永久在线| 欧美电影免费观看大全| 欧美激情综合色综合啪啪五月| 一本色道久久综合亚洲精品小说| 日韩中文字幕视频在线| 久久成人综合视频| 成人性生交大片免费观看嘿嘿视频| 国产精品亚洲激情| 色偷偷888欧美精品久久久| 久久精品99久久久香蕉| 日韩成人在线视频网站| 欧美裸体xxxx极品少妇软件|