你好,Tapestry 3.0
mechiland, Jul 2003
--------------------------------------------------------------------------------
本文主要介紹Tapestry3.0環境下一個簡單用例Tapestry的配置方法,旨在幫助開發者熟悉3.0環境。由於Tapestry官方(http://jakarta.apache.org/tapestry/)提供的Tutorial文檔很多是基於2.x的,這在極大程度上提高了學習的難度。關於Tapestry2.x的介紹以及Tapestry的框架,請參看第7期《程序員》雜志透明的一篇文章,這裡不再多說。
2.x到3.0的變化我沒有花太多的時間去研究——究竟接觸的時間有限,剛把概念弄明白,3.0就出來了,package的名字都變了,dtd也變了,一些配置的方法也不太一樣了,所以本篇文章主要討論3.0,對於2.x和3.0中區別的地方,盡量不進行比較;假如在文中比較之處有錯,還請多多指教。
1 開發環境
Tomcat5.0, Win2000Server, Tapestry 3.0b2
開發工具:Editplus2.11 :)(項目小,沒有必要用航母了)
2 讓我們開始吧!
Ok, 讓我們開始這個“你好,Tapestry3.0”吧!
首先,建立一個目錄用來保存你的工程,假定x: apestryhello(以後以$home代替);並最後建立如下文件結構:
-WEB-INF
--classes
--lib
在$home根目錄下放入一個Home.Html,代碼如下所示:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Hello, Tapestry!</title>
</head>
<body>
你好,<b>Tapestry 3.0!</b>
</body>
</html>
代碼清單1:Home.html
這就是我們的主頁面了。
然後在$home/WEB-INF/下面放入一個web.XML,出人意料的,這個web.xml竟然如此簡單,而且與Tapestry2.x的文檔中提供的大不一樣哦~~
<?xml version="1.0"?>
<!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>
<display-name>Tapestry Tutorial</display-name>
<!--Redirect it to the servlet mapping address /h-->
<filter>
<filter-name>redirect</filter-name>
<filter-class>org.apache.tapestry.RedirectFilter</filter-class>
<init-param>
<param-name>redirect-path</param-name>
<param-value>/h</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>redirect</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/h</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>15</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
代碼示例2:web.xml
稍微解釋一下:名為redirect的filter是用來轉向的,注重,那個init-param用來控制轉向到哪裡去,假如沒有或者設置不正確,就會轉到默認的地方(/app)。按照我們配置的情況,應該是當訪問/時轉到/h的servlet去。當然,這個設置是當下面的<welcome-file-list>無效時才起作用。
讀過舊版tutorial的人就會希奇,那個org.apache.tapestry.application-specification到哪裡去了?在默認情況下,Tapestry會在/WEB-INF下尋找跟ApplicationServlet名稱相同的.application(如本例中hello),另外,application的配置已經非常簡單,對於我們Hello, Tapestry這樣簡單的用例,不用.application也是可以的。不過為了形式的完整,我們將它加上:
將hello.application文件放到$home/WEB-INF下面(與web.xml)放在一起
<?xml version="1.0"?>
<!DOCTYPE application PUBLIC
"-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<application name="Hello Tapestry 3.0">
</application>
代碼示例3:hello.application
現在,就是我們的Home.page文件:
<?xml version="1.0"?>
<!DOCTYPE page-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<page-specification class="org.apache.tapestry.html.BasePage"/>
代碼示例4:Home.page
是不是不知道將這個文件放到哪裡了?放到$home/WEB-INF下面就行了!
OK, 最後一步,將Tapestry所帶的workbench示例下/WEB-INF/lib中所有的jar復制到$home/WEB-INF/lib。
3 部署
部署方法很簡單了,你可以用jar工具將$home目錄打成一個war包,或者直接將整個$home目錄復制到$Tomcat_Home/webapps下面。不論你采用那種方法,部署成功後,打開浏覽器,鍵入地址:http://localhost:8080/hello, 是不是顯示出下面的畫面呢?
4 小結
在Tapestry3.0中,部署應用程序更加輕易了,本文由於案例較簡單,很多步驟都可以忽略(在本例中,hello.application和Home.page都可以忽略不計),但是在復雜的應用中,如Tapestry自帶的workbench示例,就不可忽略了。關於Tapestry的其他特性,作者正在研究中。Tapestry是個優秀的開發框架,假如那位有愛好,或者對這篇文章中有什麼不正確的地方,歡迎批評指正,Email: [email protected]