设为首页 收藏本站
查看: 835|回复: 0

[经验分享] Apache Tiles 2.x 应用指南

[复制链接]

尚未签到

发表于 2017-1-5 10:21:10 | 显示全部楼层 |阅读模式
Jakarta Tiles是一个用于在模板中对页面进行布局的框架。Tiles产生之初是Struts架构的一部分,后来Tiles独立出来常与Spring架构配合,本文描述了独立于其它架构而在原始WEB应用中使用Tiles的方法。
基本用法
设置Tiles元素 - 核心配置文件的书写方法
Tiles核心配置文件格式为xml,文档类型为tiles-definitions。要在每一个配置文件的开头加入下述说明:
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

Tiles中的基本元素有三种:定义、模板和属性。Tiles核心配置文件(tiles-definitions)中的基本单元是“definition”。一个“definition”必须与一个“template” 相对应。“template”是一个URI、通常情况下指的是一个JSP页面。一个“definition”可以包含多个“attribute”,一个attribute可以是一个字符串、可以是一个定义的名字、也可以是一个模板。
可以使用定义描述一个带有名字的模板。下例定义了一个没有属性的模板:
<tiles-definitions>  
<definition name="header" template="/fragments/header.jsp" />  
</tiles-definitions>  
模板可以包含一个或多个属性,属性可以是一个字符串,或者是一个定义的名字,或者是一个模板。下例定义了一个包含属性的模板:
<tiles-definitions>  
<definition name="header" template="/fragments/header.jsp" />  
<definition name="main" template="/index.jsp">  
<put-attribute name="title" value="标题名" type="string"/>  
<put-attribute name="header" value="header" type="definition"/>  
<put-attribute name="footer" value="/fragments/footer.jsp" />  
</definition>  
</tiles-definitions>  

定义可以被继承,继承之后的定义属性可以改变,模板不可以改变。下例定义了一个具有继承关系的模板:
<tiles-definitions>  
<definition name="header" template="/fragments/header.jsp" />  
<definition name="main" template="/index.jsp">  
<put-attribute name="title" value="主画面" type="string"/>  
<put-attribute name="header" value="header" type="definition"/>  
<put-attribute name="footer" value="/fragments/footer.jsp" />  
</definition>  
<definition name="user" extends="main">  
<put-attribute name="title" value="新建用户" />  
</definition>   
</tiles-definitions>  


读取Tiles元素 - JSP页面上的处理方法
要想在JSP页面上使用Tiles标签,首先要引入标签库。
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  


在JSP页面上插入一个模板的基本标签是<tiles:insertTemplate />,如下例:
<tiles:insertTemplate template="/fragments/footer.jsp"/>  


如果插入的模板包含属性,则在插入模板的同时,必须使用<tiles:putAttribute />标签为其指定属性值:
引用
<tiles:insertTemplate template="/index.jsp">  
  <tiles:putAttribute name="title" value="主画面"/>  
  <tiles:putAttribute name="header" value="header"/>  
  <tiles:putAttribute name="footer" value="/fragments/footer.jsp"/>  
</tiles:insertTemplate>  


插入一个定义的基本标签是<tiles:insertDefinition />,如下例:
<tiles:insertDefinition name="main"/>  


在模板中可以指定属性的位置。设置一个属性的基本标签有两种,如果属性被指定为定义或模板,则使用<tiles:insertAttribute />标签;如果属性被指定为字符串,则使用<tiles:getAsString />标签。如:
<tiles:getAsString name="title"/>  
<tiles:insertAttribute name="header"/>  
<tiles:insertAttribute name="footer"/>  

Tiles架构在各个领域中的应用
在Web应用中直接使用Tiles架构
在web.xml中加入下述servlet即可实现在Web应用中直接使用Tiles架构的目的。
<servlet>  
<servlet-name>tiles</servlet-name>  
<servlet-class>  
org.apache.tiles.servlet.TilesServlet  
</servlet-class>  
<load-on-startup>2</load-on-startup>  
</servlet>  

TilesServlet默认查找“/WEB-INF/tiles.xml”作为Tiles核心配置文件,如果要手动指定Tiles核心配置文件的位置,可以为Servlet设置名为“definitions-config”的初始化参数值,样例如下:
<servlet>  
<servlet-name>tiles</servlet-name>  
<servlet-class>  
org.apache.tiles.servlet.TilesServlet  
</servlet-class>  
<init-param>  
<param-name>definitions-config</param-name>  
<param-value>  
/WEB-INF/tiles-defs.xml  
</param-value>  
</init-param>  
<load-on-startup>2</load-on-startup>  
</servlet>  

在传统Servlet中利用TilesServlet加载的Tiles定义(definition)可以使用TilesContainer的render方法实现转向到Tiles定义。代码如下:

TilesContainer container = TilesAccess.getContainer(  
request.getSession().getServletContext());  
container.render("main", request, response);  


更多内容
关于Tiles的更多内容,如
List Attributes
请参考Tiles官方网站:http://tiles.apache.org

Tiles 知识要点
Tiles中的三大元素:定义、模板、属性
template = URI{1}
definition = template{1} + attribute*
attribute = STRING{1} | definition{1} | template {1}

Tiles核心配置文件
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://tiles.apache.org/dtds/tiles-config_2_0.dtd">


引入Tiles标签库
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>  


在Web应用中使用直接Tiles架构
在web.xml中关于Tiles架构的定义
<servlet>  
<servlet-name>tiles</servlet-name>  
<servlet-class>  
org.apache.tiles.servlet.TilesServlet  
</servlet-class>  
<init-param>  
<param-name>definitions-config</param-name>  
<param-value>  
/WEB-INF/tiles-defs.xml  
</param-value>  
</init-param>  
<load-on-startup>2</load-on-startup>  
</servlet>  


资源
http://tiles.apache.org/
JAR包
Tiles开发包
tiles-core-2.0.3.jar
tiles-api-2.0.3.jar
tiles-jsp-2.0.3.jar
Tiles所依赖的开发包
commons-beanutils-1.7.0.jar
commons-digester-1.8.jar
commons-logging-api-1.1.jar

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-324149-1-1.html 上篇帖子: Apache模块开发学习笔记(一) 下篇帖子: Apache模块开发helloworld无错版
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表