最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java Tapestry4.1.2入門說明教程第1/2頁

 更新時間:2008年11月06日 19:51:14   作者:  
不必關(guān)心鏈接!不必關(guān)心請求(http request)到了哪里!不必關(guān)心響應(yīng)(http response)要轉(zhuǎn)向哪里!Tapestry構(gòu)建于底層的request-resonse模式,基于Servlet技術(shù),抽象出面向組件開發(fā)的模型。Tapestry關(guān)心的是:頁面、組件、事件、對象、方法、屬性!
簡單介紹
不必關(guān)心鏈接!不必關(guān)心請求(http request)到了哪里!不必關(guān)心響應(yīng)(http response)要轉(zhuǎn)向哪里!Tapestry構(gòu)建于底層的request-resonse模式,基于Servlet技術(shù),抽象出面向組件開發(fā)的模型。Tapestry關(guān)心的是:頁面、組件、事件、對象、方法、屬性!
安裝jar包
1、
將Tapestry解壓目錄下的lib目錄中的jar包拷貝到WEB-INF/lib目錄。
并將重復(fù)的包刪除(commons-logging.jar/javassist.jar/ognl-2.6.11.jar)
2、
在web.xml中添加:
復(fù)制代碼 代碼如下:

<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>

這是Tapestry的中央控制器。Tapestry頁面的顯示,所有的請求,都會被發(fā)送到這個Servlet上。
實例1:最簡單的Tapestry程序
在WebRoot下添加Home.html 
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個Tapestry程序
</body>
</html>

并訪問網(wǎng)址:
http://localhost:8088/[context path]/app
結(jié)果頁面顯示Home.html里面的內(nèi)容。
這是因為Tapestry總是會包含一個名字叫”Home”的頁面,默認情況下就是根路徑下的Home.html
實例2:添加簡單的動態(tài)內(nèi)容
Home.html改為: 
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個Tapestry程序
現(xiàn)在時間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"> </span>
</body>
</html>

重新訪問網(wǎng)址:http://localhost:8088/[context path]/app
在這個頁面上,用到了Tapestry的Insert組件(Component)。它帶一個參數(shù),通過一個ognl表達式來傳遞。
在應(yīng)用服務(wù)器的啟動參數(shù)中添加:-Dorg.apache.tapestry.disable-caching=true,可以避免每次修改頁面模板的時候重啟服務(wù)器。
jwc = Java Web Component
實例3:創(chuàng)建鏈接,指向某個頁面
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個Tapestry程序
現(xiàn)在時間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
</body>
</html>

這次,通過一個PageLink組件,指向Home頁面,PageLink組件會自動產(chǎn)生指向Home頁面的鏈接(我們不必關(guān)心這個鏈接!)。
實例4:簡單的計數(shù)器
直到現(xiàn)在為止,我們還沒有涉及到j(luò)ava類,但是已經(jīng)讓Tapestry成功運行起來了!該是寫點java代碼的時候了。我們想要創(chuàng)建一個計數(shù)器,每當用戶點擊“計數(shù)器增1”的時候,我們將這個計數(shù)器加1,然后在頁面上顯示出這個結(jié)果。
在傳統(tǒng)的請求-響應(yīng)模式中,我們針對這個問題,需要考慮的是:遞交一個請求,創(chuàng)建相應(yīng)的Action來接收這個請求,并維護計數(shù)器的值,然后決定成功轉(zhuǎn)向的頁面,將結(jié)果顯示在頁面上。
在Tapestry中,我們需要考慮的是:在哪個頁面處理這個事件,結(jié)果如何顯示在頁面上?
下面是Home.html
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個Tapestry程序
現(xiàn)在時間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
<p>
計數(shù)器當前的值是:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick">計數(shù)器增1</a>
</body>
</html>

DirectLink指定的listener為:doClick,這將觸發(fā)一個事件,實際上就是將要調(diào)用doClick()方法。
doClick()方法將要寫在哪里?因為現(xiàn)在的頁面,其動態(tài)數(shù)據(jù)無法簡單獲得,所以,必須給當前頁面創(chuàng)建一個對應(yīng)的類,我們的方法將創(chuàng)建在這個類里面。
復(fù)制代碼 代碼如下:

package com.bjsxt.crm.web.tapestry.test;
import org.apache.tapestry.annotations.Persist;
import org.apache.tapestry.html.BasePage;
public abstract class Home extends BasePage {
@Persist
public abstract int getCounter();
public abstract void setCounter(int count);
public void doClick(){
int counter = getCounter();
counter = counter + 1;
setCounter(counter);
}
}

注意:在這個例子中,類名需定義為Home;listener的名字為doClick,而不是doClick()
另外,需要在web-inf目錄下添加配置文件:app.application 
復(fù)制代碼 代碼如下:

<?xml version="1.0"?>
<!DOCTYPE application PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://tapestry.apache.org/dtd/Tapestry_4_0.dtd">
<application>
<meta key="org.apache.tapestry.page-class-packages" value="com.bjsxt.crm.web.tapestry.test"/>
</application>

配置的主要目的是讓Tapestry了解如何關(guān)聯(lián)頁面和頁面類。
實例5:帶一個參數(shù)的計數(shù)器
Home.html改為: 
復(fù)制代碼 代碼如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
第一個Tapestry程序
現(xiàn)在時間是:<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>
<p>
<a href="#" jwcid="@PageLink" page="Home">刷新</a>
<p>
計數(shù)器當前的值是:<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:1">計數(shù)器增1</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5">計數(shù)器增5</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:10">計數(shù)器增10</a> <br>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter">清空計數(shù)器</a>
</body>
</html>

相關(guān)文章

  • mybatis原理概述入門教程

    mybatis原理概述入門教程

    這篇文章主要介紹了在今天這篇博文中,我將要介紹一下mybatis的框架原理,以及mybatis的入門程序,實現(xiàn)用戶的增刪改查,她有什么優(yōu)缺點以及mybatis和hibernate之間存在著怎么樣的關(guān)系,大家這些問題一起通過本文學(xué)習(xí)吧
    2016-09-09
  • servlet Cookie使用方法詳解(六)

    servlet Cookie使用方法詳解(六)

    這篇文章主要為大家詳細介紹了servlet Cookie的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Eclipse中常用快捷鍵匯總

    Eclipse中常用快捷鍵匯總

    這篇文章主要介紹了Eclipse中常用快捷鍵,文中介紹的非常詳細,幫助大家更好的利用eclipse開發(fā),感興趣的朋友可以了解下
    2020-07-07
  • Java中g(shù)etResourceAsStream用法分析

    Java中g(shù)etResourceAsStream用法分析

    這篇文章主要介紹了Java中g(shù)etResourceAsStream用法,較為詳細的分析了getResourceAsStream的功能及用法,需要的朋友可以參考下
    2015-06-06
  • MybatisPlus使用聚合函數(shù)的示例代碼

    MybatisPlus使用聚合函數(shù)的示例代碼

    本文主要介紹了MybatisPlus使用聚合函數(shù)的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 關(guān)于java.io.EOFException產(chǎn)生的原因以及解決方案

    關(guān)于java.io.EOFException產(chǎn)生的原因以及解決方案

    文章總結(jié):EOFException異常通常發(fā)生在嘗試從空的ObjectInputStream對象中讀取數(shù)據(jù)時,解決方法是在finally語句中添加判斷,確保objectInputStream不為空后再進行關(guān)閉操作,在處理1.txt文件為空的情況時,捕獲EOFException可以避免程序終止,并且不會拋出空指針異常
    2025-01-01
  • Java類獲取Spring中bean的5種方式

    Java類獲取Spring中bean的5種方式

    這篇文章主要為大家詳細介紹了Java類獲取Spring中bean的5種方式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 解析springBoot-actuator項目構(gòu)造中health端點工作原理

    解析springBoot-actuator項目構(gòu)造中health端點工作原理

    這篇文章主要介紹了springBoot-actuator中health端點工作原理,對spring-boot-actuator的項目構(gòu)造,工作原理進行了全面的梳理,側(cè)重health健康檢查部分
    2022-02-02
  • Java中==運算符與equals方法的區(qū)別及intern方法詳解

    Java中==運算符與equals方法的區(qū)別及intern方法詳解

    這篇文章主要介紹了Java中==運算符與equals方法的區(qū)別及intern方法詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Java多線程之并發(fā)編程的核心AQS詳解

    Java多線程之并發(fā)編程的核心AQS詳解

    AQS ( AbstractQueuedSynchronizer)是一個用來構(gòu)建鎖和同步器的框架,使用AQS能簡單且高效地構(gòu)造出應(yīng)用廣泛的大量的同步器,下面小編和大家來一起學(xué)習(xí)一下吧
    2021-09-09

最新評論

澜沧| 南和县| 辽中县| 杨浦区| 昌邑市| 濮阳市| 合江县| 澄迈县| 广南县| 毕节市| 明光市| 弋阳县| 石景山区| 东安县| 和静县| 沙坪坝区| 益阳市| 金阳县| 巩义市| 安塞县| 刚察县| 乡城县| 西充县| 灌云县| 茂名市| 沈丘县| 化隆| 榆树市| 楚雄市| 武强县| 阳谷县| 宁强县| 通榆县| 北票市| 呈贡县| 绵竹市| 红河县| 淅川县| 桐柏县| 扶绥县| 安宁市|