• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 精通 Grails: 用 Groovy 服務器頁面(GSP)改變視圖

    發表于:2008-06-26來源:作者:點擊數: 標簽:服務器GroovyGSPGrails視圖
    本系列的前兩篇文章介紹了 Grails Web 框架的基本構建塊。我曾反復強調過 —Grails 基于模型-視圖-控制器(Model-View-Controller,MVC)架構模式(請參閱 參考資料),Grails 利用約定優于配置 將框架的各個部分組合在一起。Grails 用命名直觀的文件和目錄

    本系列的前兩篇文章介紹了 Grails Web 框架的基本構建塊。我曾反復強調過 —Grails 基于模型-視圖-控制器(Model-View-Controller,MVC)架構模式(請參閱 參考資料),Grails 利用約定優于配置 將框架的各個部分組合在一起。Grails 用命名直觀的文件和目錄代替了更容易出錯的在外部配置文件中手工對這些鏈接進行歸類的老方法。例如,在 第一篇文章 可以看到控制器擁有 Controller 后綴,存儲在 grails-app/controller 目錄。在 第二篇文章 了解到可以從 grails-app/domain 目錄找到域模型。

    在本月的文章中,我將通過討論 Grails 視圖進一步介紹 MVC。視圖(正如您所料)存儲在 grails-app/views 目錄內。但是視圖遠不止直觀的目錄名稱這么簡單。本文將討論 Groovy 服務器頁面(GSP)并介紹許多替代的視圖選項。在本文中將學習標準的 Grails 標記庫(TagLibs),并了解到創建自定義 TagLib 有多么容易。還會看到如何將 GSP 的常用片斷提取出來放在自己的片段模板(partial template)內,從而遵循 DRY(Don't Repeate Yourself,不要重復自己)(請參閱 參考資料)原則。最后,將學習如何為搭建的視圖調整默認模板,從而在方便地自動創建視圖和跳出 Grail 應用程序默認外觀之間進行平衡。

    查看 Grails 應用程序

    Grails 使用 GSP 作為表示層。Groovy 服務器頁面中的 Groovy 不僅代表底層技術,還代表可以快速編寫一兩個 scriptlet 的語言。從這方面來說,GSP 非常類似于 Java™ 服務器頁面(JSP)技術,JSP 允許在 Web 頁面上混合使用一些 Java 代碼,也和 RHTML(Ruby on Rails 的核心視圖技術)非常相像,RHTML 允許在 HTML 標記之間插入一些 Ruby 代碼。

    當然,Java 社區長期以來都不欣賞小腳本。scriptlet 會導致最低形式的技術重用 —復制與粘貼 — 以及其他一些在技術方面為人所不齒的惡行(因為你能 和因為你應該 之間有巨大區別)。GSP 中的 G 對優秀、正直的 Java 人員來說只應該表示一種實現語言而不是其他。Groovy TagLibs 和片段模板提供了在 Web 頁面之間共享代碼和行為的一種更成熟的方式。

    GSP 是 Grails 以頁面為中心的 MVC 觀點的基礎。頁面是基本衡量單位。列表頁面提供了到 Show 頁面的鏈接。Show 頁面支持單擊到編輯頁面,諸如此類。不論是熟練的 Struts 開發人員還是最近的 Rails 愛好者,都熟悉這種 Web 生命周期。

    之所以提到這點,是因為近幾年出現了大量不以頁面為中心的視圖技術(請參閱 參考資料)。面向組件的 Web 框架(例如 JavaServer Faces (JSF) 和 Tapestry 越來越受到青睞。Ajax 革命派生出大量基于 JavaScript 的解決方案,例如 Dojo 和 Yahoo! UI (YUI) 庫。富 Internet 應用程序(RIA)平臺,例如 Adobe Flash 和 Google Web Toolkit (GWT) 承諾能夠實現方便的 Web 部署,并提供更加豐富、與桌面類似的用戶體驗。幸運的是,Grails 能夠輕松地處理所有這些視圖技術。

    MVC 關注點隔離的整體要點在于:它能夠使您輕松地用自己喜歡的任何視圖作為 Web 應用程序的外觀。Grails 流行的插件基礎設施意味著許多 GSP 替代物不過是 grails 安裝的插件(請參閱 參考資料 獲得可用插件的完整列表的鏈接,或者在命令行下輸入 grails list-plugins)。許多插件都是由社區驅動的,是那些希望將 Grail 與他們喜歡的表示層技術一起使用的人們的努力結果。

    雖然 Grails 沒有內置 JSF 的自動掛勾(hook),但是仍然可以結合使用這兩種技術。Grails 應用程序是標準的 Java EE 應用程序,因此可以將相應的 JAR 放在 lib 目錄內,將需要的設置放在 WEB-INF/web.xml 配置文件內,并像平常一樣編寫應用程序。Grails 應用程序部署在標準的 servlet 容器內,所以 Grails 對 JSP 的支持同對 GSP 的支持一樣好。Grails 有針對 Echo2 和 Wicket 的插件(兩者都是面向組件的 Web 框架),所以在使用 JSF 或 Tapestry 插件方面沒有任何障礙。

    類似地,向 Grails 添加 Ajax 框架(例如 Dojo 和 YUI)的步驟也沒有什么特別之處:只要將它們的 JavaScript 庫復制到 web-app/js 目錄即可。Prototype 和 Scriptaculous 是 Grails 的默認安裝。RichUI 插件則從各種 Ajax 庫選擇 UI 部件。

    如果查看插件列表,那么就會看到對 RIA 客戶機的支持 —— 例如 Flex、OpenLazlo、GWT 和 ZK。顯然,Grails 應用程序并不缺少備選的視圖解決方案。但是在這里我們還是采用 Grail 直接支持的視圖技術 — GSP。

    GSP 101

    可以使用多種方法查找 GSP 頁面。文件擴展名 .gsp 就是一種很明顯的方法,就好像很多以 <g: 開頭的標記一樣。事實上,GSP 不過是標準 HTML 加上一些提供動態內容的 Grails 標記而已。在前一節提到的某些備選的視圖技術是一層不透明的抽象層,完全將 HTML、CSS 和 JavaScript 的細節隱藏在 Java、ActionScript 或其他編程語言層之后。GSP 是在標準 HTML 上的薄薄的一層 Groovy 層,因此在必要時,可以輕松地將它從框架中取出來,并使用原生的 Web 技術。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>