选择显示字体大小

jakarta struts编程:使用tiles,第二部分

安装和配置tiles

在您能够使用tiles 框架之前,您必须确保它已安装并正确的配置在web容器中。tiles框架并不依赖于某种特定的容器,您要做的就是获得所需的文件,并将它们放到web应用程序的正确位置上。



下载tiles

tiles框架包含在struts发行版中。先前版本中,它位于contrib文件夹中,但现在是核心的一部分。您还可以在http://www.lifl.fr/~dumoulin/tiles/index.html找到最新的源程序、二进制发行版本,以及其它一些有用的信息。



安装所需的jar文件和相关文件

第一步是安装所需文件。对于tiles来说,以下文件必须位于web-inf/lib目录中:

u       tiles.jar

u       commons-digester.jar

u       commons-beanutils.jar

u       commons-collections.jar

u       commons-logging.jar

如果您在使用struts,这些文件就已经存在了,此外您还需要安装tiles tld文件到应用程序的web-inf目录。

警告:不要为了避免将tiles.jar文件放到每个web应用程序的web-inf/lib目录,而将它放到servlet容器的classpath路径中,如果这样做的话会导致抛出classnotfoundexception异常。

您还应该将tiles-config.dtd文件放到web-inf 目录。该dtd文件用来验证tiles 定义文件(它将在本章的后面部分讲到)。



添加tiles标签库

就象 其它的jsp标签库一样,在您能使用它们之前,您必须将tiles标签库加入web应用程序发布描述文件中。给web.xml文件增加如下taglib元素:

<taglib>
  <taglib-uri>/web-inf/tiles.tld</taglib-uri>
  <taglib-location>/web-inf/tiles.tld</taglib-location>
</taglib>


如果您在使用标准的struts标签库,那么taglib元素应该已经有了。每个需要使用tiles标签库的页面必须在顶部包含如下行:

<%@ taglib uri=&quot;/web-inf/tiles.tld&quot; prefix=&quot;tiles&quot; %>



配置tiles和struts协同工作

tiles框架可以和struts一起使用,也可单独使用。取决于您如何使用它,为web应用程序配置tiles可以有几种选择。因为本书是讲struts的,所以我们的重点是如何将其捆绑到struts应用程序。



提示:若使用tiles框架的先前版本,您必须在web.xml文件中配置一个叫做actioncomponentservlet的特殊actionservlet,而且在struts的controller元素中还需配置一个requestprocessor。现在这些不需了-现在有一个tiles插件,它来完成所有的初始化。

如果您正计划使用tiles,该插件是非常需要的。您也可不配置该插件而使用tiles库和struts。但是,配置它也没有什么害处,如果您以后决定使用tiles定义,它还可能节约您的时间。

struts应用程序中加入tiles插件,请在struts配置文件中加入下列plug-in元素:

<plug-in classname=&quot;org.apache.struts.tiles.tilesplugin&quot; >
  <set-property property=&quot;definitions-config&quot; value=&quot;/web-inf/tiles-defs.xml&quot; />
  <set-property property=&quot;definitions-debug&quot; value=&quot;2&quot; />
  <set-property property=&quot;definitions-parser-details&quot; value=&quot;2&quot; />
  <set-property property=&quot;definitions-parser-validate&quot; value=&quot;true&quot; />
</plug-in>


在plug-in元素中,您可以加入几个set-property元素给plugin类传入附加的参数。definitions-config参数指定包含tiles定义的xml文件。如果使用了多个文件名,则它们之间用逗号分隔。

definitions-debug参数指定调试的层次,允许值为:

0 :不输出调试信息。

1 :提供部分调试信息。

2 :提供完整的调试信息。

缺省值为0。

definitions-parser-details参数指定当定义文件被解析时所需要的调试信息的层次,该值传给commons digester。所允许的值同definitions-debug参数,缺省值为0。

definitions-parser-validate参数指明解析器是否验证tiles配置文件,允许值为true和false,缺省值为true。

还有一个叫做definitions-factory-class的参数没有显示出来。您可以创建一个自定义工厂,然后在这里给出类名,缺省值为org.apache.struts.tiles.xmldefinition.i18nfactoryset。



tiles纵览

tiles框架提供一种模板机制,它能将布局和内容的职责分离。本章前面描述的模板,允许您先创建模板,然后在运行时动态地将内容插入到布局中。如果您要根据国际化、用户喜好定制您的站点,或仅仅改变视感(这在每个网站迟早会发生的),您就会发觉模板是一个强有力的机制。tiles框架具有如下特性:

u       模板能力

u       动态构建和装载页面

u       视屏定义

u       支持tile和布局重用

u       支持国际化

u       支持多通道

模板标签库已经存在于struts框架中相当长的时间了,这些标签可让您使用非常基本的模板方式在web应用程序中组织jsp页面。虽然这些标签对分离web应用程序的布局和内容很有帮助,但tiles框架走的更远,它实际上是模板标签库的超集,具备许多其它特性。



提示:tiles框架先前被称做components,后来因为component这个术语被滥用而改名。在tiles文档和源程序中某些地方仍然在沿用老的名称。



cedric dumoulin创立了tiles框架,它扩展了模板的概念,提供给开发人员在用jsp技术创建web应用程序时更大的灵活性和自由度。web应用程序的内容仍然用jsp页面和javabeans驱动,但是布局由一个独立的jsp页面或xml文件(后面将提到)指定。



什么是tile?

tile是web页面的一个区域,一个页面可以只有一个区域组成,或分解为几个区域。图14-1列举了storefront应用程序的一个例子。

图14-1 storefront应用程序的区域



一个jsp页面通常由几个区域或tile组成,关于页面没有什么特别的,仅仅是用在tiles框架中,并使用tiles标签库。

tile最重要的方面在于它是可复用的,对于布局和内容来说都是正确的。不同于大多数jsp页面,tiles组件在应用程序中重复利用,甚至可能跨应用程序复用。而且,tile不复杂。实际上,我们已经看到的大多数例子,包括例14-2到例14-4,都能归类为tiles。



使用布局tile

在tiles的世界里,布局就是我们已经提及的模板。布局起着模板同样的作用,即组合一组tile来指定页面的格式。实际上,例14-2就是一个tile布局。tiles和struts中包含的模板库在语法上几乎完全一样。



提示:tiles框架是david geary所定义的标准struts模板标签的功能上的超集,但它提供更多的功能,进一步扩展了模板的概念。



布局也是受到高度评价的tiles。jsp页面,甚至整个应用程序都能复用布局。通常建立一个布局库,用于许多不同的项目中。tiles框架自带有几个预建立的布局tiles,您可复用它或是根据需要修改它。tiles框架包含的布局有:

u       classic布局:具有页头、左列菜单、主体、和页脚

u       columns布局:具有多列,每列垂直堆叠

u       center布局:具有页头、左帧、右帧、主体和页脚

u       menu布局:具有链接菜单

u       tabs布局:

u       vertical box布局:

由于tiles的主要目标之一是重用性,因此您可在应用程序中只需少许修改或不修改即可重用这些布局。当然您也可自由地根据需要定制布局。



规划布局

提早规划布局是非常重要的,在网站建立之后再决定外观绝对不知一个好方法。通常由人性化团队、产品管理或是web开发人员自身做这种决定。不管怎样,您应该在开发之前规划布局。

storefront应用程序的缺省布局在例14-2中介绍了,该布局将作为例子贯穿本章。



传参数给布局

例14-2所示的布局tile是一般的,它并不知道itemdetail.jsp或其它页面的内容。这样做是有目的的,它能让我们在很多页面中复用该布局。与在布局页面中硬编码不同,内容是在运行时作为参数传递给布局页面的。让我们来看看storefront应用程序的signin.jsp tile,如例14-5所示:



例14-5: storefront应用程序的signin.jsp tile

<%@ taglib uri=&quot;/web-inf/tiles.tld&quot; prefix=&quot;tiles&quot; %>

<tiles:insert page=&quot;../layouts/storefrontdefaultlayout.jsp&quot; flush=&quot;true&quot;>
  <tiles:put name=&quot;header&quot; value=&quot;../common/header.jsp&quot;/>
  <tiles:put name=&quot;menubar&quot; value=&quot;../common/menubar.jsp&quot;/>
  <tiles:put name=&quot;body-content&quot; value=&quot;../security/signin-body.jsp&quot;/>  
  <tiles:put name=&quot;copyright&quot; value=&quot;../common/copyright.jsp&quot;/>        
</tiles:insert>

例14-5中的put标签的作用是提供布局tile,布局由包含的insert标签指定。例14-5中的name属性的值必须和所期望的布局tile相吻合。



提示:insert标签有一可选ignore属性,它可以允许当找不到属性所引用的文件时什么东西都不输出。缺省时,如果属性所指定的文件没有提供的话,运行时异常将抛出。

来自:http://www.onjava.com/pub/a/onjava/excerpt/progjakstruts_14/index1.html


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons