国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
使用 Velocity 實(shí)現(xiàn)客戶端和服務(wù)器端模板
在服務(wù)器端可以使用 Velocity 處理模板和生成的動(dòng)態(tài)內(nèi)容(HTML、XML等)。這和 JSP 技術(shù)的目標(biāo)非常接近。但是,JSP 模型可以毫無阻礙地訪問底層的 Servlet API 和 Java 編程語言。事實(shí)上,為了避免訪問這些固有的特性,您在編碼中必須嚴(yán)格約束(只是使用 EL、標(biāo)簽庫和類似的特性)。它基本上是一種在很大程度上開放的訪問模型。
拿 Velocity 與之比較。作為一種完全自包含的模板引擎和腳本解釋器,Velocity 擁有完全封閉的模型。任何針對(duì)系統(tǒng)和/或 Java 編程語言的訪問都必須明確地啟用。默認(rèn)情況,Velocity 模板中不能訪問 Java 編程語言的任何方面。這種封閉的模型使 Velocity 能夠提供分離的模板表示層,與任何應(yīng)用程序業(yè)務(wù)邏輯或者數(shù)據(jù)管理代碼清晰地劃分開。
現(xiàn)在讓我們把這種模板引擎與 Tomcat 5 的最新版本集成在一起,看一看 Velocity 在服務(wù)器端的應(yīng)用。
回頁首
Velocity 發(fā)行包帶有一個(gè) org.apache.velocity.servletVelocityServlet 庫類,擴(kuò)展它可以很快地創(chuàng)建一個(gè)模板處理 servlet。作為獨(dú)立的客戶機(jī)應(yīng)用程序測(cè)試的任何模板都可以使用 VelocityServlet 部署在服務(wù)器上。把獨(dú)立的 Velocity 模板轉(zhuǎn)移到 Web 應(yīng)用程序中相對(duì)比較簡(jiǎn)單。只需要以下幾個(gè)步驟:
工具是在模板中可以通過 Velocity 上下文使用的實(shí)用 Java 對(duì)象。雖然可以手工把這些對(duì)象附加到上下文中,但 VelocityViewServlet 工具箱管理器可通過更加靈活和結(jié)構(gòu)化的方式完成。在模板中一般是通過調(diào)用工具的方法來使用它們。 VelocityViewServlet 與 VelocityStruts 都提供了非常有價(jià)值的經(jīng)過測(cè)試的工具,在作為一種視圖技術(shù)部署 Velocity 時(shí)極其有用。
從 org.apache.velocity.servlet.VelocityServlet 類派生一個(gè) Servlet 類。 重寫并實(shí)現(xiàn)其中的一個(gè) handleRequest() 方法。 在 handleRequest() 的實(shí)現(xiàn)中,添加希望在模板中作為上下文屬性使用的數(shù)據(jù)或工具(請(qǐng)參閱側(cè)欄Velocity 中的工具)。 在 handleRequest() 的實(shí)現(xiàn)中,從文件或資源(如 JAR 文件)中取得模板并返回它。
在示例代碼包中, com.ibm.dvworks.velocity.VelTestServlet 就是按照上述步驟創(chuàng)建的一個(gè) servlet。您可以查看 webapps\vservlet\WEB-INF\src 目錄下的代碼。如果改變了這些代碼,一定要使用 compile.bat 批處理文件重新編譯它。
部署描述符(web.xml 文件)定義了該 servlet 并把它映射到 /vServlet URL 模式中,如清單 19 所示:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>vServlet</servlet-name> <servlet-class>com.ibm.dvworks.velocity.VelTestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>vServlet</servlet-name> <url-pattern>/vServlet</url-pattern> </servlet-mapping> </web-app>
加載并處理的模板放在 webapps\vServlet 目錄中。在這個(gè)例子中,模板文件稱為 variables.vm 。測(cè)試之前一定要保證 velocity-dep---?.jar 文件已經(jīng)放在 webapps\vServlet\WEB-INF\lib 目錄下,然后啟動(dòng) Tomcat 5 并訪問 http://localhost:8080/vservlet/Servlet URL。
要把模板功能擴(kuò)展到 Web 應(yīng)用程序中,應(yīng)該使用 Velocity 工具集中的 VelocityViewServlet 。Velocity 工具是 Velocity 的一個(gè)子項(xiàng)目(請(qǐng)參閱參考資料 找到這個(gè) URL 并下載最新的版本)。該 Servlet 為 Velocity 用作一種視圖層技術(shù)提供了更復(fù)雜的支持,既可以與 JSP 技術(shù)聯(lián)合使用也可以代替后者。使用 VelocityViewServlet 可以減少許多冗余代碼,因?yàn)樗峁┝耍?div style="height:15px;">
對(duì)請(qǐng)求對(duì)象和屬性、會(huì)話對(duì)象和屬性以及 servlet 上下文和屬性的直接模板訪問 正式的、可外部配置的“工具箱”,可以增加在模板中使用的自定義工具(這里講的工具只是具有公共方法的已編譯的類) 一個(gè)通用的、經(jīng)過測(cè)試的、隨時(shí)可用的工具庫
要把 VelocityViewServlet 集成到 Web 應(yīng)用程序中,可以看一看示例 velview Web 應(yīng)用程序(在 webapps\velview 目錄中)。該應(yīng)用程序包括本文中所討論的那些模板。此外,它還顯示了請(qǐng)求、會(huì)話以及 servlet 上下文對(duì)象的屬性。集成的步驟如下:
首先要保證 velocity-tools-view.jar 文件在應(yīng)用程序的 lib 目錄中。當(dāng)然,這個(gè) velocity JAR 文件也應(yīng)該在那兒。
在部署描述符 web.xml 文件中,包括 VelocityViewServlet 。初始化參數(shù)是一個(gè)工具箱描述 XML 文件。該 servlet 映射為處理所有擴(kuò)展名為 .vm 的文件,如清單 20 所示:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>velocityView</servlet-name> <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>velocityView</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> </web-app>
該例子的工具箱描述符(toolbox.xml)文件中,包含了兩個(gè)來自 Velocity 工具庫的通用工具可以在模板 DateTool 和 MathTool 中訪問。這兩個(gè)工具使我們能夠格式化日期和時(shí)間信息,并在模板中執(zhí)行浮點(diǎn)運(yùn)算,如清單 21 所示:
<?xml version="1.0"?> <toolbox> <tool> <key>date</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.DateTool</class> </tool> <tool> <key>math</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.MathTool</class> </tool> ...
在 VelocityViewServlet 中有一組常用的標(biāo)準(zhǔn)工具,如表 1 所示:
工具名 描述
LinkTool 處理 URI。該工具經(jīng)常會(huì)用到,如果在模板中創(chuàng)建可點(diǎn)擊的鏈接就要用到該工具,可以生成依賴于上下文的 URI 部分。
CookieTool 使模板能夠創(chuàng)建或訪問瀏覽器緩沖的 cookie。
ParameterParser 簡(jiǎn)化后面收到的請(qǐng)求參數(shù)的解析。
還有兩個(gè)高度專門化的、不那么常用的工具,如表 2 所示:
工具名 描述
ViewRenderTool 使模板能夠解析包含 VTL 的字符串。
AbstractSearchTool 提供了一種骨架工具(必須使用自定義的 Java 代碼來擴(kuò)展),以便實(shí)現(xiàn)在線搜索和搜索結(jié)果分頁。
您可以使用 http://localhost:8080/velview/variables.vm URL 測(cè)試 velview 應(yīng)用程序。您應(yīng)該打開模板源代碼看一看所用的 Velocity 引擎、 LinkTool 和 CookieTool 。
回頁首
Struts 是一種構(gòu)造基于 MVC 模型的框架的流行 Web 應(yīng)用程序。Struts 默認(rèn)的視圖組件技術(shù)是 JSP 技術(shù)。但是,可以很容易把 Velocity 集成進(jìn)來作為視圖組件。圖 1 說明了 Velocity 的這種具體應(yīng)用:
重要的是要看到,在這種結(jié)合中 Velocity 并沒有代替 JSP 技術(shù)。相反,JSP 技術(shù)和 Velocity 模板可以協(xié)同工作。集成 Velocity 需要配置 VelocityViewServlet 以便處理 .vm 模板,就像部署 VelocityViewServlet 部分所講的那樣。這意味著.jsp 文件將繼續(xù)由容器(即 Tomcat 5 中的 Jasper)處理,而任何 .vm 模板則傳遞給 Velocity。
Velocity Tools 子項(xiàng)目中的 VelocityStruts 組件(請(qǐng)參閱參考資料)包含集成 Velocity 與 Struts 的所有功能。 VelocityStruts 提供了一組專用的 Velocity 工具,用于訪問 Struts 專有的資源和 Velocity 模板中的信息。表 3 列出了最常用的工具:
工具名 描述
StrutsLinkTool 針對(duì) Struts 的 LinkTool 專用版本,提供了 setAction() 和 setForward() 訪問預(yù)先配置的活動(dòng)映射。
FormTool 訪問 Struts 的表單 beans。
ErrorsTool 處理 Struts 錯(cuò)誤消息,包括對(duì)國際化的支持。
MessageTool 提供對(duì) Struts 國際化支持的訪問,尤為特別的是依賴于語言的消息資源。
還有一組工具專用于 Struts 1.1 中的新特性,如表 4 所示:
工具名 描述
SecureLinkTool 用于 Struts 1.1 的安全鏈接(SSL)擴(kuò)展。
ActionMessagesTool 提供對(duì) Struts 1.1 新對(duì)象 ActionMessages 的訪問。
TilesTool 提供對(duì) Struts 1.1 Tiles 擴(kuò)展支持的訪問。
ValidatorTool 提供對(duì) Struts 1.1 Validator 擴(kuò)展的訪問,生成代碼驗(yàn)證表單輸入字段。
在 webapps\struts-example 目錄中可以找到一個(gè)例子,使用 Struts 而非 JSP 技術(shù)創(chuàng)建 Struts 頁面。本例中我們使用 Struts 取代了實(shí)例 Web 應(yīng)用程序所發(fā)布的第一個(gè)標(biāo)題頁,您可以試著改變其他的頁面。下面列出了操作的步驟。 把 Velocity 庫復(fù)制到 Struts 示例應(yīng)用程序下的 WEB-INF\lib 目錄中。要使用 Tomcat 5(5.0.16 是撰寫本文時(shí)的最新版本)和 Struts 1.1,需要把以下 JAR 文件復(fù)制到 webapps\struts-example\WEB-INF\lib 目錄中: velocity-tools-1.1-beta1.jar velocity-1.4-rc1.jar
然后在 Struts 配置文件( WEB-INF\struts-config.xml ),把 Struts 動(dòng)作映射設(shè)置為轉(zhuǎn)向 index.vm 文件而不是 index.jsp 文件,如清單 22 所示:
清單 22. 把 Struts 動(dòng)作轉(zhuǎn)向 index.vm
<action path="/logoff" type="org.apache.struts.webapp.example.LogoffAction"> <forward name="success" path="/index.vm"/> </action>
在部署描述符 WEB-INF\web.xml 文件中配置 VelocityViewServlet 處理 .vm 文件。同樣把歡迎文件設(shè)為 index.vm 而非 index.jsp,如清單 23 所示:
清單 23. 改變 struts 示例 Web 應(yīng)用程序的部署描述符
<!-- Action Servlet Configuration --> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml, /WEB-INF/struts-config-registration.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>velocity</servlet-name> <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet </servlet-class> <init-param> <param-name>org.apache.velocity.toolbox</param-name> <param-value>/WEB-INF/toolbox.xml</param-value> </init-param> <init-param> <param-name>org.apache.velocity.properties</param-name> <param-value>/WEB-INF/velocity.properties</param-value> </init-param> </servlet> <!-- Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>velocity</servlet-name> <url-pattern>*.vm</url-pattern> </servlet-mapping> <!-- The Welcome File List --> <welcome-file-list> <welcome-file>index.vm</welcome-file> </welcome-file-list>
最后,把 toolbox.xml 和 velocity.properties 文件從本文的源代碼下載中(請(qǐng)參閱參考資料)移動(dòng)到 WEB-INF 目錄下。
 
新的 index.vm 文件如清單 24 所示,可以把它與原來的 index.jsp 文件比較。
<html> <head> <title>$msg.get("index.title")</title> </head> <body bgcolor="white"> #if ( !$application.database) <font color="red"> ERROR: User database not loaded -- check servlet container logs for error messages. </font> <hr> #end <h3>$msg.get("index.heading")</h3> <ul> <li> <a href="$link.setURI("editRegistration.do").addQueryData("action","Create")"> $msg.get("index.registration") </a> </li> <li> <a href="$link.setURI("logon.jsp")"> $msg.get("index.logon") </a> </li> </ul> <p>&nbsp;</p> <a href="$link.setURI("tour.do")"> <font size="-1">$msg.get("index.tour")</font> </a> <p>&nbsp;</p> <img src="$link.setURI("powered-by-logo.gif")" alt="Powered by Velocity"/> </body> </html>
在 index.vm 中,整個(gè)模板都使用 $msg 內(nèi)的消息工具訪問 Struts 的地域有關(guān)的國際化資源。通過對(duì)包含國際化字符串的資源包的本地化更改,這種方法避免了模板中的多數(shù)硬編碼字符串。
您可以使用 VTL 的條件指示符 #if 直接檢查在 servlet 上下文中是否存在數(shù)據(jù)庫屬性。 $application 引用可用于訪問 servlet 上下文中的任何屬性( $request 、 $response 和 $session 也可用于訪問其他 Servlet API 對(duì)象的屬性)。
LinkTool 的 setURI() 方法用于生成服務(wù)器端到 Struts 動(dòng)作和“Powered by Velocity”標(biāo)志圖片的 URI 鏈接。注意,這里使用 LinkTool 的 addQueryData() 方法向結(jié)果 URI 種增加附加的動(dòng)作信息。
要測(cè)試該 Velocity 頁面,您可以啟動(dòng) Tomcat 5 并訪問 http://localhost:8080/struts-example/ URL。注意它的結(jié)果與原來的 JSP 版本完全一致。
回頁首
Velocity 模板處理程序可以直接集成到 Java 語言應(yīng)用程序中,立即提供報(bào)告生成或者模板處理的功能。
將模板引擎擴(kuò)展到 Web 應(yīng)用程序,可以使用 VelocityServlet 處理動(dòng)態(tài)生成 HTML 輸出的 Velocity 模板。Velocity 工具項(xiàng)目對(duì)使用 VelocityViewServlet 組件化 Web 層應(yīng)用程序開發(fā)提供了更多的支持。 VelocityViewServlet 以模板為基礎(chǔ)為基于 Web 的 UI 構(gòu)造提供了方便的視圖層。
在使用 MVC 模型框架設(shè)計(jì)復(fù)雜的 Web 應(yīng)用程序時(shí),Velocity 作為一種視圖/模板化技術(shù)——以 VelocityViewServlet 的形式——可以很方便地插入到框架中。對(duì)于流行的 Jakarta Struts MVC 框架,Velocity 可以與基于 JSP 的視圖技術(shù)協(xié)作,也可以和選擇的任何模型技術(shù)進(jìn)行交互。
您可以參閱本文在 developerWorks 全球站點(diǎn)上的英文原文.
下載本文的源代碼。
關(guān)于 Velocity 模板引擎的最新版本、相關(guān)文檔、郵件列表和社區(qū)新聞,請(qǐng)?jiān)L問Velocity 官方站點(diǎn)。
可以從Velocity 工具子項(xiàng)目 下載 VelocityView servlet、與 Struts 集成的 VelocityStruts 以及其他一些工具。
Struts MVC 框架是一種非常流行的開放源代碼的用于創(chuàng)建 Web 應(yīng)用程序的框架。Velocity 可以與 JSP 技術(shù)一起作為 Struts 的視圖技術(shù)。
Turbine是一種從頭開始設(shè)計(jì)的開放源代碼 MVC 框架,可以很好地使用 Velocity 作為視圖組件技術(shù)。
看看 Srikanth Shenoy 和 Nithin Mallya 的文章,了解如何集成 Struts、Tiles 和 Java Server Faces( developerWorks,2003 年 9 月)。
要使用 WebSphere Studio V5 創(chuàng)建基于 Struts 的 Web 應(yīng)用程序,請(qǐng)閱讀 Colin Yu 和 Jane Fung 的系列文章(2003 年 11 月)。
訪問Developer Bookstore,上面有豐富的技術(shù)書籍列表,其中包括數(shù)百本和Java 有關(guān)的書籍
developerWorksJava 技術(shù)專區(qū) 可以找到關(guān)于 Java 編程語言各個(gè)方面的很多文章。
Sing Li 是Professional Apache Tomcat Pro JSP 、 Early Adopter JXTA、 Professional Jini 以及 Wrox Press 出版的許多其他書籍的作者,也是 Wrox Press 很多其他書籍的作者。他定期為技術(shù)雜志撰稿,也是 P2P 發(fā)展的積極倡導(dǎo)者。Sing 是咨詢顧問和自由作家,可以通過westmakaha@yahoo.com與他聯(lián)系。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Struts 與 Velocity 的集成1 - Coolingverse 專欄 - CS...
Velocity教程
Apache java項(xiàng)目全介紹
[轉(zhuǎn)帖]Velocity的layout功能
《Velocity Web應(yīng)用指南》中文版
Tiles框架特性和內(nèi)容
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服