1搭建環(huán)境
我們需要如下開發(fā)環(huán)境:
Eclipse3.1及其以上版本:http://www./downloads/index.php MyEclipse4.0及其以上版本:http://www.(可選) Java SE 5.0及其以上版本:http://www./download/index.jsp Tomcat 5.5.12及其以上版本:http://tomcat./download-55.cgi(其他web服務(wù)器也可以) Tapestry4.0包:http://jakarta./site/downloads/downloads_tapestry.cgi Tapestry4.0支持包:http://jakarta./tapestry/dependencies.html Opera瀏覽器:http://www.Opera.com 下載以上這些組建后,,我們就可以開發(fā)我們的wap程序了,。 安裝Eclipse及MyEclipse的過(guò)程我就不詳細(xì)介紹了,,然后我們用MyEclipse創(chuàng)建一個(gè)web工程,,我們暫時(shí)命名為WapZone,,如果你使用的是其他Eclipse組件也無(wú)所謂,,創(chuàng)建一個(gè)普通的web工程即可,,但是注意把剛才下載的Tapestry4.0包以及Tapestry4.0支持包中的jar文件拷貝到WEB-INF目錄下,,最后的目錄結(jié)構(gòu)如下圖所示,。
然后我們進(jìn)行web.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java./xml/ns/j2ee"
xmlns:xsi="http://www./2001/XMLSchema-instance"
xsi:schemaLocation="http://java./xml/ns/j2ee
http://java./xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Wap Zone</display-name>
<servlet>
<servlet-name>article</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>article</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>wml</extension>
<mime-type>text/vnd.wap.wml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wmls</extension>
<mime-type>text/vnd.wap.wmlscript</mime-type>
</mime-mapping>
<mime-mapping>
<extension>wbmp</extension>
<mime-type>image/vnd.wap.wbmp</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>index.wml</welcome-file>
</welcome-file-list>
</web-app>
這里關(guān)鍵的就是配置了一個(gè)名字叫article 的servlet,它的 實(shí)現(xiàn)類是org.apache.tapestry.ApplicationServlet,,并且把所有/app的請(qǐng)求都交這個(gè)servlet來(lái)處理,。
接下來(lái)在WEB-INF目錄下新建一個(gè)XML文件,命名為hivemodule.xml,,內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<module id="WapZone" version="1.0.0" package="com.wap.zone.view">
</module>
這里的module的 id只是起標(biāo)識(shí)的作用,,因?yàn)镠ivemind可以擁有很多的配置文件,所以一般都使用包名作為id以保證唯一性,,package 標(biāo)識(shí)該module的默認(rèn)包所在路徑,。對(duì)于初學(xué)者來(lái)說(shuō)可能不太理解這個(gè)hivemodule.xml文件到底是做什么用的,其實(shí)這個(gè)文件是Tepestry作者開發(fā)的另一個(gè)開源項(xiàng)目Hivemind的配置文件,,就象spring里的applicationContext.xml一樣的作用,。這個(gè)Hivemind開源項(xiàng)目也和spring類似,都是所謂的反轉(zhuǎn)控制的框架,,網(wǎng)上有一些介紹它的文章,,可以自己去看看,這里就不詳細(xì)介紹了,,因?yàn)槲乙膊惶宄?,呵呵。好了,,閑話少說(shuō),,咱們接著往下講。
接下就是在WEB-INF目錄下創(chuàng)建article.application,,首先說(shuō)明一下這個(gè)文件的名稱這個(gè)文件的名稱和web.xml文件中的<servlet-name>article</servlet-name>是相關(guān)的,,大家可能已經(jīng)注意到了,這個(gè)文件的名稱和<servlet-name>的值是一樣的,。文件內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta./tapestry/dtd/Tapestry_4_0.dtd">
<application name="Wap Zone" engine-class="org.apache.tapestry.wml.WMLEngine">
<meta key="org.apache.tapestry.template-extension" value="wml"/>
<meta key="org.apache.tapestry.page-class-packages" value="com.wap.zone.view.article"/>
<library id="wml" specification-path="/org/apache/tapestry/wml/WML.library"/>
</application>
在application文件中,,我們做了以下事情:
第一:聲明了項(xiàng)目名稱:name=" Wap Zone ",并且定義了engine-class,; 第二:我們定義了模板文件的擴(kuò)展名為wml,。 第三:我們導(dǎo)入了WML.library。
第四:我們定義了page文件與java文件相互對(duì)應(yīng)的默認(rèn)包路徑,,Tapestry4根據(jù)這個(gè)路徑自動(dòng)去尋找與Home.page同名的Home.java文件,,如果找不到,那么就會(huì)默認(rèn)使用BasePage類
到此為止,,開發(fā)環(huán)境已經(jīng)搭建完畢,,下面我們先來(lái)寫一個(gè)小的測(cè)試頁(yè)面。
首先現(xiàn)在我們?cè)趕rc下新建包:com.wap.zone.view.article,,然后在該包下新建一個(gè)Home.java文件:
package com.wap.zone.view.article;
import org.apache.tapestry.wml.Deck;
public abstract class Home extends Deck {
public String getTest() {
return "Hello World!";
}
}
接著在WEB-INF/下建一個(gè)Home.page文件:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE page-specification PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta./tapestry/dtd/Tapestry_4_0.dtd">
<page-specification>
</page-specification>
最后,,我們?cè)趙eb/目錄下新建一個(gè)Home.wml文件:
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www./DTD/wml12.dtd">
<wml>
<head>
<meta http-equiv="Cache-Control" content="must-revalidate" forua="true"/>
<meta http-equiv="Cache-Control" content="no-cache" forua="true"/>
</head>
<template>
<do type="accept" label="Index">
<go href="../index.wml" />
</do>
</template>
<card id="card0" title="最新TOP10帖子列表">
<p>
<b jwcid="@Insert" value="ognl:test">
</b>
</p>
</card>
</wml>
然后把這個(gè)項(xiàng)目部署到tomcat下,,在Opera瀏覽器里輸入http://localhost:8080/WapZone/app
就可以看到我們剛才的成果了
|
|