1, 配置文件的简单介绍
总体说来,Tapestry项目中,有6种配置文件:web.xml文件,application文件,library文件,Engine文件(对象),Global文件(对象)和Visit文件(对象)。
这6种中,只有web.xml文件和application文件是必须。
在Tapestry框架中,每一个页面被分割为三个部分:html模板,page规范和页面java文件。
1) web.xml文件
每一个web项目都有一个web.xml文件,Tapestry项目的web.xml文件,其实并没有太特别之处:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- generated by Spindle, http://spindle.sourceforge.net -->
<web-app>
<display-name>MyTapestry</display-name>
<filter>
<filter-name>redirect</filter-name>
<filter-class>org.apache.tapestry.RedirectFilter</filter-class>
</filter>
<servlet>
<servlet-name>MyTapestry</servlet-name>
<servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyTapestry</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
</web-app>
这些都是固定的配置,如果希望对session有效时间进行设置,可以添加:
<session-config>
<session-timeout>60</session-timeout>
</session-config>
2) application文件
application文件是指以项目名称为文件名,以application为后缀的文件,例如:MyTapestry.application。
application文件放在WEB-INF目录下,该文件定义了整个Tapestry项目的所有文件映射。
例如在MyTapestry.application文件中:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application
PUBLIC "-//Apache Software Foundation//Tapestry Specification 3.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_3_0.dtd">
<!-- generated by Spindle, http://spindle.sourceforge.net -->
<application name="MyTapestry" engine-class="com.tapestry.MyEngine" >
<description><![CDATA[ My first Tapestry project ]]></description>
<property name="org.apache.tapestry.template-encoding" value="GBK"/>
<property name="org.apache.tapestry.output-encoding" value="GBK"/>
<property name="org.apache.tapestry.visit-class">com.tapestry.Visit</property>
<property name="org.apache.tapestry.global-class">com.tapestry.Global</property>
<page name="Home" specification-path="Home.page"/>
</application>
我们实现了如下功能:
第一, application文件定义了Engine对象的映射路径:
<application name="MyTapestry" engine-class="com.tapestry.MyEngine" >
第二, application文件定义了模板编码和输出编码:
<property name="org.apache.tapestry.template-encoding" value="GBK"/>
<property name="org.apache.tapestry.output-encoding" value="GBK"/>
第三, application文件定义了Visit对象和Global对象的映射路径:
<property name="org.apache.tapestry.visit-class">com.tapestry.Visit</property>
<property name="org.apache.tapestry.global-class">com.tapestry.Global</property>
第四, application文件定义了页面html模板与page规范之间的映射路径:
<page name="Home" specification-path="Home.page"/>
<page name="FirstPage" specification-path="FirstPage.page"/>
<page name="SecondPage" specification-path="SecondPage.page"/>
第五, application文件定义了组件jwc模板与page规范之间的映射路径:
<component-type type="Border" specification-path="Border.jwc"/>
第六, application文件定义了组件包的调用路径:
<library id="contrib" specification-path="/org/apache/tapestry/contrib/Contrib.library"/>
3) Engine文件(对象)
Engine对象,是指继承于BaseEngine.java的文件。Engine对象是Tapestry的底层对象,是Tapestry框架的核心部分。
4) Global文件(对象)
Global对象是指在application文件中声明的java文件,Global对象实际上就是普通web应用程序中的application对象。
5) Visit文件(对象)
Visit对象是指在application文件中声明的java文件,通常实现序列化接口。Visit对象实际上就是普通web应用程序中的session对象。
6) library文件
library文件很像application文件,用于定义自定义组件的jwc模板到page文件之间的映射。这种映射关系也可以定义在application文件中。如果希望将自己开发的组件打包,那么就会用到以library为后缀的文件。
7) html模板(jwc模板)
html模板与jwc模板实际上是一样的,均是HTML静态页面,相比于普通的静态HTML页面,仅仅是在Tapestry的html模板和jwc模板中嵌入了一个jwcid属性。因此,Tapestry对美工的干涉非常小。html模板是指页面的静态HTML页面,而jwc是指组件的静态HTML页面。
8) page规范
page规范是一个XML文件,page文件是html模板与页面(组件)java文件的纽带。对于组件使用的各种参数声明,我们可以放在html模板中,也可以放在page规范中。
9) 页面java文件(组件java文件)
页面java文件继承于BasePage类,而组件java文件继承于BaseComponent类。页面(组件)java文件均是abstract类。在Tapestry应用程序实际运行时,Tapestry会自动提供一个supclass继承于这个页面(组件)java文件来实现其中页面(组件)逻辑。