乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Struts 與 Velocity 的集成1 - Coolingverse 專欄 - CS...

       nbtymm 2006-10-31
      Struts Recipes 的合著者 George Franciscus 帶您一步步地把 Velocity 模板引擎集成進 Struts 應用程序。結果是一個快速、靈活的 JSP 替代物,同時帶有希望從 Struts 得到的所有方便。

      Java?? 服務器頁面(JSP)技術是如此普及,以至于人們忘記了在創(chuàng)建 Web 頁面時還有其他選擇。但是最近,有些開發(fā)人員已經轉向模板引擎,以獲得在 JSP 中得不到的靈活性。雖然用 JSP 和模板引擎都可以把數(shù)據嵌入 HTML,但是每種技術都有自己的處理方式。Velocity 模板是一個特別流行的 JSP 替代品。Velocity 提供了平緩的學習曲線和巨大的易用性。開發(fā)人員喜歡它簡潔的語法,而且性能分析也證明它的性能超出 JSP。Velocity 也非常容易集成進 Struts 應用程序。

      在這篇文章中,我將介紹如何在 Struts 應用程序中集成和使用 Velocity 模板引擎。我會首先提供一個公式,然后逐步展開它。生成的應用程序組合了 Struts 和 Velocity —— 一個第一流的組合,可能會讓您懷疑自己對 JSP 的忠誠!

      請參閱 下載 一節(jié),在開始之前下載這篇文章的源代碼,以及 Struts、Velocity 和 Velocity 工具包。請注意,本文假設您熟悉使用 Struts 框架進行 MVC 編程。

      關于模板引擎

      在開始集成 Struts 和 Velocity 的簡單任務之前,讓我們先確保您理解模板引擎和它們在視圖生成中的角色。模板引擎作為整體概念,Velocity 作為具體實現(xiàn),它們的生命在 HTML 之外。Velocity 把數(shù)據合并到文本主體中不同的點上。文本可以是文字、電子郵件或 HTML。由于采用這種方式,Velocity 模板引擎有點兒像 Microsoft Word 的“郵件合并”特性。郵件合并允許您方便地把動態(tài)數(shù)據(例如姓名、地址和電話號碼)合并到信件中。在早期的日子里,組織用這項特性生成大型郵件列表并把它們送到郵局,導致垃圾郵件的產生!
          
      Velocity 是什么?

      Velocity 是一個基于 Java 的模板引擎,它提供了簡單的基于模板的語言,可以用類似腳本的方式引用對象。Velocity 促進了分離團隊成員之間的責任:允許 Web 設計人員專注于視圖(即頁面的觀感),而 Java 程序員專注于后端代碼。把 Java 代碼從頁面布局中分離出來,會讓 Web 應用程序未來更易維護。當 Velocity 與 Sruts 這樣的 MVC 框架結合時,就成了 JSP 或 PHP 可行的替代。

      在 Web 應用程序中,Velocity 實現(xiàn)的目標與 JSP 相同:可以用它在向 HttpServletResponse 的 OutputStream 發(fā)送之前生成要發(fā)送的 HTML。在 Struts 應用程序中使用 Velocity 的一種方式是在 Struts 的 Action 內部寫入響應,然后返回 null 的 ActionForward。雖然這種技術可行,但卻有嚴重的缺陷:無法使用 struts-config.xml 文件把響應抽象出來。把視圖放在 Action 內部,意味著如果想要修改響應,就必須修改 Action。

      因為這種技術剝奪了 Struts 最好的一項特性(即從視圖中抽象出重點的能力),所以我更愿意把所有響應指向一個 servlet,由它負責訪問 Velocity 模板,合并上下文的數(shù)據,生成響應,然后再送回瀏覽器。稍后就會學到,Velocity 的設計者們已經把這些步驟全都捆綁在了一起:您需要做的只是跟著我來看如何一步步地實現(xiàn)它們。如果您還沒有 訪問“下載”一節(jié),現(xiàn)在是訪問的時候了。


         


      Velocity 的五步

      把 Struts 與 Velocity 模板引擎組合起來很簡單,也很直接;實際上,只要用五步就可以實現(xiàn):

         1. 把 Velocity JAR 放在類路徑中。
         2. 修改 web.xml 文件讓它識別 Velocity servlet。
         3. 把 Velocity toolbox.xml 放在應用程序的 WEB-INF 目錄下。
         4. 修改 struts-config,把它的視圖指向 Velocity 模板而不是 JSP。
         5. 為每個需要顯示的頁面創(chuàng)建 Velocity 模板。

      我將用一個熟悉的搜索用例來演示 Struts 與 Velocity 的集成。在這個示例中,一個簡單的應用程序允許用戶按照圖書的 ISBN 編號搜索圖書。應用程序的結果頁面顯示與 ISBN 編號匹配的圖書。
         
      放棄 Struts 標記 —— 不!

      現(xiàn)在,您可能會想,是不是需要放棄那些過去讓您節(jié)約了許多編碼時間的很好的 Struts 標記。如果不使用 JSP,那么肯定沒有使用 Struts 的 JSP 標記!幸運的是,您可以使用 Velocity 工具。Velocity 的 Struts 工具提供了所有您熟悉的 Struts 方便特性,但是添加了 Velocity 的靈活性。

      第 1 步:把 Velocity JAR 放在 WEB-INF/lib 下

      如果您還沒下載 Velocity,那么現(xiàn)在需要下載它。Velocity 本身是很棒的,但是它的工具包可以幫助您把工作做得更好更快。特別是 Struts 工具模擬了您以前熟悉的 Struts 標記。請參閱 下載 一節(jié)下載 Velocity 模板引擎和 Velocity 工具。

      請注意不同時候,需要的 jar 也會略有不同。在這里我不想列出一個 JAR 列表,只是想建議您訪問 Velocity 的主頁(請參閱 參考資料)并閱讀那里的安裝指南。一旦得到了需要的 JAR,只需把它們放在 WEB-INF\lib 下面即可。

      第 2 步:修改 web.xml,讓它識別 Velocity 的 servlet

      下一步是修改 Struts 的 web.xml 文件,讓它識別 Velocity 的 servlet 并把所有以 .vm 結尾的資源請求定向到 Velocity servlet,如清單 1 所示。

      清單 1. 修改 web.xml,聲明 Velocity servlet

      <servlet>
        <servlet-name>velocity</servlet-name> |(1)
        <servlet-class> |(2)
               org.apache.velocity.tools.view.servlet.VelocityViewServlet
        </servlet-class>                                           

        <init-param> |(3)
          <param-name>org.apache.velocity.toolbox</param-name>
          <param-value>/WEB-INF/toolbox.xml</param-value>     
       </init-param>                                                

       <load-on-startup>10</load-on-startup> |(4)
      </servlet>

      <!– Map .vm files to Velocity –>
      <servlet-mapping> |(5)
        <servlet-name>velocity</servlet-name>
        <url-pattern>
      .vm</url-pattern>     
      </servlet-mapping>


      讓我們來看看清單 1 中發(fā)生了什么:

          * (1)聲明了 Velocity servlet 并給了它一個 velocity 句柄。
          * (2)聲明了 Velocity servlet 的類名。

      Velocity servlet 接受“toolbox”參數(shù)。toolbox 是聲明應用程序的可用工具的位置。因此,在清單 1 中,我還做了以下工作:

          * (3)告訴 VelocityServlet 在哪里可以找到 toolbox 的配置。

          * (4)設置了 load-on-startup 標記,確保在正確的時間裝入 Velocity servlet。任何大于或等于 0 的值都會迫使容器通過調用 servlet 的 init() 方法來裝入它。放在 load-on-startup 標記體中的值決定了不同的 servlet 的 init 方法調用的次序。例如,0 在 1 之前調用,而 1 在 2 之前調用。缺少的標記或負值允許 servlet 容器根據自己的選擇裝入 servlet。

          * (5)聲明了 servlet 映射,強迫所有用 .vm 結尾的資源請求定向到 Velocity servlet。請注意(5)中的<servlet-name> 必須與(1)中的<servlet-name> 匹配。交錯的聲明和映射會在日志中生成錯誤。

      第 3 步:把 toolbox.xml 放在 WEB-INF 下

      利用 Velocity,可以使用(或創(chuàng)建)包含許多工具的工具箱。用來登記類的工具箱中包含有用的函數(shù),常常會用到。幸運的是,Velocity 提供了許多預先構建好的工具。還創(chuàng)建了許多 Struts 工具來模擬原始的 Struts 標記。如果發(fā)現(xiàn)需要構建自己的工具,也可以自由地構建。在清單 2 中顯示的 toolbox.xml 可以在 Velocity 工具下載中找到。這個文件應當隨 Velocity JAR 一起放在 WEB-INF 下。

        本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多