首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Tapestry 4.1.2 入門教程:組件化 Web 開發初體驗

     編輯:Java 程式設計入門

Tapestry 是基於 Servlet 的組件化 Web 框架,將開發者從繁瑣的 Request/Response 模式中解脫,專注於頁面、組件、事件、對象。本文以 Tapestry 4.1.2 為例,從環境搭建到計數器實戰,帶你快速上手。

一、核心理念

  • 不關心 URL 映射、請求轉發、響應跳轉
  • 關注點:頁面、組件、事件、對象、方法、屬性
  • 基於 OGNL 表達式綁定數據與邏輯

二、環境搭建

  1. 解壓 Tapestry,將 lib 下 JAR 複製到 WEB-INF/lib
  2. 刪除重複包:commons-logging.jar、javassist.jar、ognl-2.6.11.jar
  3. 配置 web.xml 註冊中央控制器:
    <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>
  4. 啟動參數添加 -Dorg.apache.tapestry.disable-caching=true,開發期修改模板即時生效

三、實戰遞進:五個例子

例 1:最簡頁面

WebRoot 下建 Home.html,訪問 /app 自動渲染(約定大於配置)。

例 2:動態內容 —— Insert 組件 + OGNL

<span jwcid="@Insert" value="ognl:new java.util.Date()"></span>

jwcid = Java Web Component ID,@Insert 組件輸出值,OGNL 表達式動態計算。

例 3:頁面跳轉 —— PageLink 組件

<a href="#" jwcid="@PageLink" page="Home">刷新</a>

框架自動生成指向 Home 頁面的 URL,無需手寫。

例 4:簡單計數器 —— 頁面類 + @Persist + DirectLink

Home.html:

<span jwcid="@Insert" value="ognl:counter"></span>
<a href="#" jwcid="@DirectLink" listener="listener:doClick">計數器增1</a>

Home.java(包路徑需在 app.application 配置):

public abstract class Home extends BasePage {
    @Persist
    public abstract int getCounter();
    public abstract void setCounter(int count);

    public void doClick() {
        setCounter(getCounter() + 1);
    }
}

app.application:

<application>
  <meta key="org.apache.tapestry.page-class-packages" value="com.bjsxt.crm.web.tapestry.test"/>
</application>

關鍵點:@Persist 讓屬性跨請求保持(默認存 Session),DirectLink 觸發 listener:方法名(不帶括號)。

例 5:帶參計數器

<a href="#" jwcid="@DirectLink" listener="listener:doClick" parameters="ognl:5">計數器增5</a>
<a href="#" jwcid="@DirectLink" listener="listener:clearCounter">清空計數器</a>

頁面類新增 doClick(int increment)、clearCounter() 方法,參數自動綁定。

四、Tapestry 4.x 關鍵概念速查

概念說明
Page.html 模板 + .java 類(可選),一一對應
Component可復用 UI 片段,如 @Insert、@PageLink、@DirectLink
OGNL對象圖導航語言,綁定屬性、調用方法、集合操作
@Persist頁面屬性持久化(Session/Client/Workflow)
Listener事件監聽器,命名約定 listener:方法名
Application Specapp.application XML,配置頁面類包路徑、全局屬性

五、遷移建議

Tapestry 4.x 已停止維護,現代項目建議選用 Tapestry 5.4+(重寫核心、支持注解、無 XML 配置)或 Spring MVC、Spring Boot 等主流框架。本文僅供維護舊項目或學習組件化思想參考。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved