日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tapestry框架概述

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tapestry框架概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Tapestry帶來了真正的Java web應用程序OOP編程,摘自《深入淺出Tapestry》中的一句話。這本書也是我學習Tapestry的參考之一,其他參考資料如《Tapestry in action》《enjoy web de v with tapestry》《Tapestry開發指南》等等也非常不錯。

在此,把在學習Tapestry過程當中當中的一些經驗和大家分享。
Tapestry與其他諸如struts springMVC JSF等framework之間的比較在此不做贅述了,既然選擇花時間來看我的這片文章我想你也一定有興趣了解一下這門技術。當然希望你能對基于MVC的java web有所了解,這會對你Tapestry的學習有很大的幫助。

1 搭建環境(windows)


??? 1. 建議選擇?http://tapestry.apache.org/download.html? 4.1.5 binary (zip) 下載到本地之后解壓到任意目錄,在本文中路徑為:D:\env\tapestry-project-4.1.5?
??????? D:\env\tapestry-project-4.1.5\lib下包含了開發一個Tapestry應用的全部jar包
??? 2. myeclipse6.0。
????
??? 3. 下面讓我們來開發一個簡單的 Tapestry 應用:
??? ??? 啟動 myeclipse ,新建 java web project.
??????? 展開工程(myt4pro1)右鍵點擊JRE System library 選擇 build path >> configure build path. 新對話框中選擇 libraries 選項卡,點擊 add library>>user library>>user libraries>>new ,起一個名字本文中為 T4-lib 然后點擊 add JARs 將 D:\env\tapestry-project-4.1.5\lib 目錄下的全部jar文件導入. 然后選中 T4-lib 點擊finish 。
??????? 修改web-inf下web.xml文件,如下:

<?xml?version="1.0"?encoding="UTF-8"?>
<web-app?version="2.4"
??? xmlns
="http://java.sun.com/xml/ns/j2ee"
??? xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
??? xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
??? http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
????????????
<display-name>myt4pro</display-name>
<servlet>
????<servlet-name>myts</servlet-name>
????<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
????<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
????<servlet-name>myts</servlet-name>
????<url-pattern>/app</url-pattern>
</servlet-mapping>?
</web-app>


??? 4. 在WebRoot目錄下(web-inf同級目錄),創建Home.html。(必須叫Home.html,Tapestry程序入口)代碼如下:

<span?jwcid="@Insert"?value="ognl:t4start"?/>

????
??? 5. 在web-inf目錄下創建名為 Home.page 的xml文件。如下:

<?xml?version="1.0"?encoding="GBK"?>
<!DOCTYPE?page-specification?PUBLIC?
"-//Apache?Software?Foundation//Tapestry?Specification?4.0//EN"?
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"
>

<page-specification?class="myts.Home">
?????????
</page-specification>


??? 6. 最后在 myts 包下寫一個java類:

package?myts;
import?org.apache.tapestry.html.BasePage;
????????
public?abstract?class?Home?extends?BasePage{
?????public?String?getT4start(){
??? ????return?"hello?,Tapestry4..";
???? }
}


??? 7. 啟動tomcat 在瀏覽器輸入 http://localhost:8080/myt4pro1/app 應該看到如下頁面
????
??????? hello ,Tapestry4..
????????
??? 8. 該例子的目錄結構如下:


????
2.Tapestry框架概述

??? 一個基于Tapestry的web應用可能包含了以下幾種文件:應用規范文件,hivemind配置文件,HTML模板文件,頁面規范文件,頁面類文件,組件包規范文件,組件規范文件,組件類文件,動態腳本文件。下面一個一個來詳細講述。
????
??????? 1. 三種配置文件(應用程序規范文件,hivemodule配置文件,組件包規范文件)
????
??????? 1.1 應用程序規范文件:是一個以應用程序servlet名稱命名的,以“.application”為擴展名的xml文件。一個web應用只能有一個應用程序規范文件。他制定了應用程序的各種細節配置,頁面和組件配置,組件包配置等等。如果我們不為應用程序配置應用程序規范文件,Tapestry會為我們提供一個默認的。

<?xml?version="1.0"?encoding="UTF-8"?>
<!DOCTYPE?application?PUBLIC?
"-//Apache?Software?Foundation//Tapestry?Specification?4.0//EN"
?"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"
>
?????????????
<application?name="myt4pro">
????<meta?key="org.apache.tapestry.page-class-packages"?value="myts"/>
????<library?id="contrib"?specification-path="/org/apache/tapestry/contrib/Contrib.library"/>
</application>

??? ??? ????
??? ??? ??? <application>為根標簽元素,name制定了serlvet名稱。
??????????? <meta>用于配置應用程序細節。在此我們為應用程序配置頁面類的默認定義包路徑。那么Tapestry將自動在myts路徑下尋找頁面類。
??????????? <library>導入了外部組件包
????????????
??????? 1.2 hivemind配置文件:HiveMind框架是一個依賴注入微核心框架,Tapestry框架構建在HiveMind之上。如果你的程序業務層沒有用到hivemind,不必配置hivemodule文件。下面給了一個為應用程序配置Friendly URL的例子:

<?xml?version="1.0"?encoding="UTF-8"?>
????<module?id="myt4pro"?version="1.0.0">
??? ????<contribution?configiration-id="tapestry.url.ServiceEncoders"?/>
??? ??? ????<direct-service-encoder?id?="direct"?stateless-extension="direct"?stateful-extension="sdirect"?/>
??? ??? ????<direct-service-encoder?id?="action"?stateless-extension="action"?stateful-extension="saction"?/>
??? ??? ????<page-service-encoder?id="page"?extension="page"?service="page"?/>
??? ??? ????<page-service-encoder?id="external"?extension="external"?service="external"?/>
??? ??? ????<asset-encoder?id="asset"?path="/assets"?/>
??? ??? ????<extension-encoder?id="ext"?id="ext"?extension="svc"?after="*"/>
????</contribution>
</module>


???? ??? 1.3 組件包規范文件: 為了跨項目積累組件,我們可以將組件打成jar包,然后通過在應用程序規范文件中引入組件包的方式,調用組件包中的自定義組件。組件包規范文件的后綴為“.library”的XML文件,命名任意。
????????
??????? 2. Tapestry頁面的組成
??????? 2.1 HTML模板:HTML模板就是標準的靜態HTML頁面,在HTML模板中我們通過jwcid(Java Web Component ID)標簽屬性調用Tapestry組件。例如上例中的:?????????

<span?jwcid="@Insert"?value="ognl:t4start"?/>

????????????
??? ??? 在上面的代碼中,調用了Tapestry的官方組件Insert,value屬性是Insert組件的參數之一。"@"符號用于區分jwcid是一個組件類型還是一個組件ID,如果是一個組件ID,tapestry將在HTML模板對應的頁面規范中尋找對應該組件ID的組件調用配置。(亦可這樣理解,"@"為官方組件,無"@"為自定義組件,自定義組件需要在“.page”文件中詳細配置該組件的用法。)
????????????
??????? 2.2 頁面規范:是以頁面名稱命名且后綴是.page的XML文件,這個后綴為.page的XML文件必須聲明Tapestry的頁面規范DOCTYPE。
??????????? 例如在上例中:

<span?jwcid="@Insert"?value="ognl:t4start"?/>

???? ??? ?? 也可以這樣來表示:
??????????? HTML模板:

<span?jwcid="test"?/>

??? ??? ??? 頁面規范:
???????????????

<?xml?version="1.0"?encoding="GBK"?>
<!DOCTYPE?page-specification?PUBLIC
?"-//Apache?Software?Foundation//Tapestry?Specification?4.0//EN"
?"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"
>
????????????????
<page-specification?class="myts.Home">
????<component?id="test"?type="Insert">
??? ????<binding?name="value"?value="t4start"?/>
????</component>
</page-specification>


??????? 2.3 頁面類:必須繼承org.apache.tapestry.html.BasePage類,如:

package?myts;
import?org.apache.tapestry.html.BasePage;
????????????
????public?abstract?class?Home?extends?BasePage{
????public?String?getT4start(){
??? ????return?"hello?,Tapestry4..";
??? }
}

??? ??? 3. Tapestry組件的組成
??????? 在Tapestry中,一個組件通常由HTML模板,組件規范,組件類,動態腳本文件4個文件組成,除了組件規范以外,其他三個文件都不是必須的。
????
??? ??? 4. ognl
??????? OGNL是 Object Graph Navigation Language 的簡稱,是一種綁定方式的表達式語言。
??????? OGNL是OpenSymphony的一個開源項目。
??????? OGNL最重要的也是最根本的作用是簡化調用Java類中的getter/setter方法,同時,他也是一種功能單一且易于使用的表達式語言,OGNL表達式就式該語言的全部。對于OGNL如何與模板對象綁定,Tapestry已經實現,我們不需要關心。同時,雖然OGNL表達式帶有運算功能,但是Tapestry框架將頁面邏輯全部放到了頁面類中,因此根本沒必要使用OGNL表達式來處理頁面邏輯。
????????
??????? 舉幾個例子便于理解:
????????
??????? 4.1 簡化調用Java屬性。
??? ??? ??? ognl:test
??????????? java類:

public?String?getTest{
????return?"test";
}

?? ????
??? ??? 4.2 逐層訪問java對象方法
??????????? ognl:user.value
??????????? java類:

public?User?getUser(){
????return?new?User();
}
public?class?User{
??? public?String?getValue(){
?? ?? ??return?"test"
??? }
}


??????? 4.3 訪問java對象中的方法
??????????? ognl:makeTest
??????????? java類:

public?void?makeTest(){
??? System.out.println("test");
}




最后,讓我們來回顧一下Tapestry框架的整個調用過程:Home.html -> Home.page -> Home.class

源:http://prowl.iteye.com/blog/476525

總結

以上是生活随笔為你收集整理的Tapestry框架概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲男人的天堂网站 | va婷婷| 中文字幕第11页 | 国产精品香蕉在线 | 91丝袜一区二区三区 | 午夜丰满寂寞少妇精品 | 久久老司机 | 天天撸在线视频 | 91av在线网站 | 欧美,日韩,国产精品免费观看 | 色老头一区二区三区在线观看 | 日韩一区二区三区在线 | 国产精品视频123 | 88av.com| 欧美自拍第一页 | 午夜av激情 | 国产区一区二区三区 | 亚洲最大福利视频 | 国内精品偷拍视频 | 色婷婷成人网 | 亚洲av无码国产精品色午夜 | 国精产品一区一区三区 | 国产suv精品一区 | 欧美精品一区二区三区久久 | 久草一区二区 | 在线亚洲色图 | 超能一家人电影免费喜剧在线观看 | 亚州精品国产精品乱码不99按摩 | 久久加久久| 日韩精品视频免费 | 久久久久久九九 | 很黄很污的视频网站 | 日韩二区三区四区 | 三级全黄视频 | 欧美一区二区三区四区在线观看 | 波多野结衣av在线免费观看 | 91亚洲精品乱码久久久久久蜜桃 | www.色99| 丁香色欲久久久久久综合网 | 潘金莲激情呻吟欲求不满视频 | 黄色大视频 | 大肉大捧一进一出视频 | 欧亚在线视频 | 蜜臀av一区二区三区 | 麻豆av影院 | 欧美视频免费在线观看 | www.欧美| 亚洲 欧美 激情 小说 另类 | 女警白嫩翘臀呻吟迎合 | 久久精品午夜福利 | 欧美日韩中文一区 | 亚洲日本天堂 | 日韩在线高清视频 | 97超碰人人 | 久久澡 | 中国免费毛片 | 久久精品无码中文字幕 | 精品乱子一区二区三区 | 亚洲国产无线乱码在线观看 | 国产精品久久久久久久久借妻 | 中文文字幕一区二区三三 | 免费精品一区二区 | 成人在线免费电影 | 嫩草影院懂你的影院 | 日韩精品极品 | 日本日皮视频 | 久久国产美女视频 | 亚洲人午夜射精精品日韩 | 黄色动漫在线观看 | 国际av在线 | 男人桶女人桶爽30分钟 | 亚洲永久免费精品 | 成人污污视频在线观看 | 国产免费一区二区三区最新不卡 | 成人春色影视 | 欧美一区二区三区在线观看视频 | 国产精品人妻一区二区三区 | 伊人影片| 香蕉在线视频播放 | 涩涩爱在线 | 91影院在线免费观看 | 国产91在线播放精品91 | 日韩在线观看免费高清 | aa视频在线 | 国产一二三区av | 欧美日韩成人一区 | 亚洲天堂免费视频 | 一对一色视频聊天a | 中文字幕精品久久久久人妻红杏1 | 国产白袜脚足j棉袜在线观看 | 三年中国片在线高清观看 | 奇米影视在线播放 | 国产又粗又猛又爽又黄av | 国产亚洲精品一区二区三区 | 精品国产免费视频 | 国产精品二区视频 | 国产欧美日 | 999资源站| 亚洲欧美自拍一区 |