Struts Tiles 框架概述
Tiles 框架为创建 Web 页面提供了一种模板机制,它能将网页的布局和内容分离。允许先创建模板,然后在运行时动态地将内容插入到模板中。
在我们已知的创建符合式网页的方法中,包括:
采用基本的JSP语句创建符合式网页。这种方法会导致JSP代码的大量冗余,后果是重复编码、多处修改,大大增加开发和维护成本。
采用JSP的include指令创建符合式网页。和第一种方案相比,尽管采用JSP的include指令创建的复合式网页减少了重复代码,但不能完全避免代码冗余。同时JSP文件的数量增加了,使软件的复杂度也增加了。
采用<tiles:insert>标签创建符合式网页。这种方法和JSP的include指令拥有相同的功能,同时也有着相同的利弊。
采用Tiles模板创建符合式网页。Tiles模板是一种描述页面布局的JSP页面,Tiles模板只定义了Web页面的样式,而不指定内容。在Web页面运行时,才把特定的内容插入到模板中。使用Tiles模板的步骤是:
(1) 安装Tiles标签库所需要的文件;
(2) 定义模板文件,模板文件是指定义了网页布局,但不包含具体网页内容的JSP页面;
(3) 在页面中运用定义好的Tiles模板,运用Tiles模板是通过<tiles:insert>标签和<tiles:put>子标签来定义的。
Struts还在Tiles框架中引入了Tiles组件的概念。Tiles组件可以代表一个完整的网页,也可以代表网页的一部分。简单的Tiles组件可以组成复杂的Tiles组件,或被扩展为复杂的Tiles组件。Tiles组件的使用步骤:
(1) 安装Tiles标签库所需要的文件;
(2) 定义模板文件,模板文件是指定义了网页布局,但不包含具体网页内容的JSP页面。在模板JSP页面中通过<tiles:insert attribute="pageName"> 标签来预留页面将要加载的位置。
(3) 在专门的XML文件中配置Tiles组件。如下配置一个default-definition组件(其中pageName与<tiles:insert>标签中的pageName对应):
<tiles:definitions>
<definition name="default-definiton" path="...../layout.jsp">
<put name="pageName" value="...../jspName.jsp">
......
</definiton>
</tiles-definitions>
(4) 在Struts配置文件中配置TilesPlugin插件,代码如下:
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>
<set-property property="definitions-parser-validate" value="true"/>
</plug-in>
TilesPlugin插件用于加载Tiles组件的配置文件,在<plug-in>元素中包含几个<set-property>子元素,用于向
TilesPlugin插件传入附加的参数:
definitions-config参数:指定Tiles组件的配置文件。如果有多个配置文件,则它们之间用逗号分隔。
definitions-parser-validate参数:指定XML解析器是否验证Tiles配置文件,可选值包括true和false,默认值为
true。
(5) 为保证TilesPlugin插件在Web应用启动时加载,在web.xml文件中配置ActionSerlvet(在MyEclipse中添加Struts支持,会默认配置好ActionServlet)。ActionServlet控制器在初始化时会加载所有插件。
(6) 最后在需要应用Tiles组件的JSP页面中通过<tiles:insert definiton="default-definiton">标签,插入Tiles组件。(其中default-definiton对应于(3)中的default-definiton)
如果Tiles组件是一个完整的网页,还可以直接通过Struts Action来访问Tiles组件。只要如下配置好一个action就可以在页面中访问:
<action path="/default"
type="org.apache.struts.actions.ForwardAction"
parameter="definitions-config">
</action>
此外,Tiles组件还有两个非常有用的特性:
Tiles组件的可组合性。Tiles组件作为一种可重用的组件,可以像搭积木一样,把简单的Tiles组件组装成复杂的Tiles组件:
<tiles-definitions>
<definiton name="side-definiton" path="......./sidelayout.jsp">
<put name="top" value="top.jsp">
<put name="bottom" value="bottom.jsp">
</definiton>
<definiton name="content-definiton" path="....../contentlayout.jsp>
<put name="side" value="side-definiton" type="definiton">
<put name="content" value="content.jsp">
</definiton>
</tiles-definitons>
Tiles组件的可扩展性。Tiles组件可以像Java类一样,被子Tiles组件继承,子Tiles拥有父Tiles组件的所有特性,从而进一步消除代码冗余。
<tiles-definitions>
<definiton name="base-definiton" path="......./baselayout.jsp">
<put name="header" value="header.jsp">
<put name"content" value="">
<put name="footer" value="footer.jsp">
</definiton>
<definiton name="content-definiton" extends="base-definiton">
<put name="content" value="content.jsp">
</definiton>
</tiles-definitons>
Struts Tiles 框架概述相关推荐
- 基于Tiles框架Struts框架的UI 设计—几种组织HTML和JSP视图组件
摘要每个web应用开发者一定组织视图组件,例如 页首,正文体和页尾. 有许多技术可以组织这些组件, 但每个都有优缺点.这篇文章包括了7个可用的解决方案并让你了解 Tiles框架和Struts框架的灵 ...
- Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01
目录 第一节 框架概述 1.1 什么是框架 1.2 三大框架 1.3 三层架构 1.4 MVC.Servlet.Filter MVC Servlet Filter 第二节 Struts简介 2.1 S ...
- 掌握Tiles框架 (二)-- Tiles布局和定义
1. Tile 布局 构建第一个 tile 布局 如果站点能够重用相同的布局(使用 HTML 表格来实现)和图像,而不必重复相同的 HTML 代码,这样不是很好吗? Tile 在为站点创建共同的外观方 ...
- Tapestry框架概述
Tapestry带来了真正的Java web应用程序OOP编程,摘自<深入浅出Tapestry>中的一句话.这本书也是我学习Tapestry的参考之一,其他参考资料如<Tapestr ...
- struts -Tiles介绍
來源:http://hithoper.blog.hexun.com/17860631_d.html 安装和配置Tiles 在您能够使用Tiles 框架之前,您必须确保它已安装并正确的配置在web容器中 ...
- 9.struts1.x中tiles框架的使用
在页面直接使用titles标签 先引入标签:<%@taglib uri="http://struts.apache.org/tags-tiles" prefix=" ...
- Struts+DAO框架搭建完成!(源码)
今天做了这个Struts+DAO框架,可以说是又向SSH迈了一步. 做的过程中又发现了一些问题,但是在我和其他人的努力下一起解决了.这个问题是MyEclipse的Tomcat的启动问题.(已经解决 ...
- Struts MVC 框架 (让你一步步成为高手)
web应用的分层 交互层,表现数据,收集数据,也就是视图层,接受请求,通过处理层完成相应的响应.(V,C) 处理层,完成数据的处理,也就是业务层(M). MVC设计模式(应用观察者模式的框架模式) M ...
- Spring框架概述
Spring框架概述 Spring是一个Service层的框架,可以整合许多其它框架进行工作. Spring的主要技术是 IOC(DI) AOP IOC(DI) - 控制反转(依赖注入) AOP - ...
最新文章
- php sqlsrv_query,sqlsrv_query
- OSX操作技巧:快速锁定系统(类似Windows+L)
- 1.21 Pattern类和Matcher类的使用
- Python自动化运维——系统性能信息模块
- g++ linux 编译开栈_Linux下编写C++服务器(配置C++编译调试环境)
- 主成分分析原理解释(能力工场小马哥)
- [mmdetection] - win10配置mmdetection(1.1和2.0) + 训练网络(faster-rcnn、mask-rcnn)
- 前端学习(590):调试javascript的流程
- instanceof 的运用
- Replace Method with Method Object(以函数对象取代函数)
- mysql always as_MySQL always returning BIT values as blank
- Eclipse怎样连接并打开oracle等数据库?
- 阿里矢量图标库 - Unicode 方式使用说明(两种用法)
- 数据结构课程设计(基于AVL树的身份证管理系统)
- 使用labelme标记图片、json批量转dataset的解决方案以及一些问题解决方案
- 局域网自建对讲服务器,Windows 局域网语音对讲
- Java 小练习(图形面积计算器)
- F5 ELK可视化方案如何做到DNS运维更安全更高效
- 2019电赛----模拟电磁曲射炮
- 实体店商家微信会员系统开发步骤_分享微信会员系统优势
热门文章
- C语言:到底是不是太胖了
- mac系统共享服务器,mac共享服务器
- 【cs224n学习作业】Assignment 1 - Exploring Word Vectors【附代码】
- 斯坦福cs224n-2021 assignment1-探索词向量—词共现矩阵—SVD(奇异值分解)
- SQL注入学习之特殊符号(三)
- linux命令iconv_linux下命令——iconv用法
- 如何构建用户画像,给用户打“标签”?
- 如何更新npm和nodejs到最新版本?
- 计算机音乐告白之夜,温柔版:《告白之夜(纯音乐)》
- Web安全之SQL注入总结