掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构
掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构
入门
本教程所讲述的内容
本教程讲述如何使用 Tiles 框架来创建可重用的表示组件。(在最初创建它时,Tiles 框架被命名为 Components。 后来改变了名称是因为“components(组件)”代表了太多不同的东西,不过原先的名称的精髓仍然得到了保留。) 然而,除了站点布局之外,使用 tile 还能做其他许多事情。例如,您可以划分表示层以更好地重用布局、HTML以及其他可视组件。
本教程力图揭示使用 Tiles 框架的基础,然后让您的知识再上一个台阶。当完成本教程的学习时,您将能够使用更高级的 Tiles 特性来创建可重用组件。
注意:贯穿本教程,我们交替使用术语 tile 和 页面,因为任何 Web 资源都可以是 tile。 一个 tile 布局代表一种特殊类型的 tile,即可以用来在它内部放置其他 tile。 一个 tile 布局可以用作另一个 tile 布局内的 tile。
明确地说,本教程:
- 定义 Tiles 框架和体系结构。
- 介绍 Tiles 体系结构以及它是如何与 Struts 集成的。
- 澄清一些关键 Tiles 概念。
- 展示如何生成 tile 以及将 tile 用作站点模板。
- 展示如何使用 XML 和 JavaServer Pages (JSP) 中的 tile 定义。
- 定义 tile 范围(scope)以及如何将对象移进和移出 tile 范围。
- 使用属性列表。
- 展示如何嵌套 tile。
- 展示如何生成 tile 以及将 tile 布局用作小型可视组件。
- 展示如何细分定义。
- 为 tile 创建控制器。
- 展示如何将 tile 用作
ActionForward
。
谁应该学习本教程?
如果您发现自己在每个页面上都要编写三行相同的 JSP 代码,或者您想容易地定义复杂的模版布局,那么您就会从本教程中获益。
本教程假设您完全理解 Java 编程、MVC(Model-View-Controller,模型-视图-控制器)、Model 2 和 JSP 技术。虽然良好的 Struts 背景会让您从本教程中获得最大好处,不过只要您精通 JSP 编程,就应该能够理解本教程讲述的大多数内容。
软件需求和代码安装
为完成本教程的学习,您将需要:
- 符合 JSP 1.1、1.2 或 2.0 版的 servlet/JSP 容器。 Apache Tomcat 3.x 或更高版本是一个优秀的选择。注意:本教程的例子是使用符合 JSP 1.2 的容器来编写的。
- Tiles 框架。可作为Struts 1.1下载包的一部分或作为单独的组件从Tiles Web 站点获得该框架。
- 源代码。我已提供了两个版本:一个带 jar 文件的版本和为窄带用户准备的一个不带 jar 文件的版本。 Struts 附带了一个空 war 文件
struts-blank.war
(在webapps
目录下),它说明了您需要哪些配置文件和 jar 文件,以及通常将它们放在哪里。您将对本教程中的例子代码使用相同的结构。
请参阅参考资料以了解关于这些材料和附加参考资料的信息。
Tiles 框架和体系结构
Tiles 框架
Tiles 框架彻底揭示了 jsp:includes
内部的概念 ―― 从而允许您更灵活地创建可重用的页面。使用 Tiles 框架,开发人员能够通过组合可重用的 tile 来构建页面。您应该将 tile 看作是可视组件。
Tile 布局是允许在其上放置其他 tile 的特殊 JSP 页面。 Tile 布局控制了 tile 在页面上的放置位置。从许多方面看来,tile 布局都和模板布局类似。事实上,如果以前使用过 Struts,那么您会注意到 Tile 框架与模板自定义标签库向是后兼容的。
术语解释
本教程中出现的术语初看起来可能有点难以招架,因此在更详细地讨论 Tiles 框架之前,让我们首先定义一些重要术语。
术语词汇表
- Tiles Struts 用来创建表示组件的模板框架。
- 页面 tile 布局包括的 Web 资源。
- Tile 同页面。
- 区域 tile 布局中插入其他 tile 的范围。 区域拥有诸如页眉、页脚之类的逻辑名称。
- Tile 布局 描述其他页面应该定位在何处的 JSP 页面。Tile 布局充当模板,定义了插入其他 tile 的区域。 一个 tile 布局可以是另一个 tile 布局的 tile。
- 定义 定义用于调用某个 tile 布局的参数。
Tile 布局
从某些方面看来,tile 布局工作起来就像一个显示函数。要使用某个 tile 布局,可使用 tiles:insert
标签来调用它。调用 tile 布局时要向它传递参数。这些参数将成为该 tile 布局的属性;例如,参数将放入 tile 范围。
调用 tile 时传递的参数可以是其他 JSP 页面或 Web 资源,您可以将它们插入布局中的预定义位置(称为 区域)。参数还包含能够插入 tile 布局的字符串。事实上,可以将许多类型的对象作为参数传递给 tile。这些参数会成为仅对该 tile 可用的 tile 范围内的属性。
tile 范围 类似页面范围,因为 tile 范围比请求范围更特殊化。 tile 范围允许 tile 用户给 tile 传递参数(称为属性)。tile 范围允许您传递仅对该 tile 布局或 tile 可用的变量(称为属性)。 特殊自定义标签允许您将属性从 tile 范围复制到页面、请求、会话或应用程序范围,或者将属性作为包含的 Web 资源来显示。
默认参数
有些编程语言,比如 C++、Visual Basic 和 Python,允许您向函数和方法传递默认参数。为进一步扩展这个显示函数,Tiles 框架还允许您向 tile 布局传递默认参数。为此,您必须定义一个 tile 定义 。 Tile 定义允许您定义 tile 的默认参数。Tile 定义(definition)可以在 JSP 代码或 XML 中定义。
像类扩展其他类一样,定义可以扩展其他定义。通过使用定义和 tile 布局,您能够创建可重用的显示组件。
可以结合 Struts 使用 Tiles,也可以在没有 Struts 的情况下使用 Tiles。要结合 Struts 使用 Tiles,您将使用 Struts 附带的 Tiles 标签库。 此外,Tiles 框架包括它自己的 RequestProcessor
,用于将 tile 布局作为 ActionForward
来处理――从而允许您转到 tile 定义而不是转到 JSP 页面。Tile 是通过在它的 RequestProcessor
中重写 processActionForward
来实现这点的。
典型的 tile 布局
典型的 tile 布局可能为页眉、页脚、菜单和正文定义矩形区域,如图 1 所示。
图 1 所示的区域可以映射到类似图 2 所示的某个 Web 站点。
注意,只需传递正确的参数,就能够容易地重新定义这个应用程序的可重用部分。 例如,雇员清单可能使用相同的页眉和页脚,但是使用不同的菜单和正文,同时仍然能够使用 tile 布局所定义的全部通用布局区域。 这样允许对不同的内容重用相同的 tile 布局。 与包括 HTML 标记不同的是,您将在标记中包括内容。
(前一篇)精通Struts:Tiles框架+Struts (后一篇) 掌握Tiles框架 (二)-- Tiles布局和定义
掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构的更多相关文章
- SiteMesh:一个优于Apache Tiles的Web页面布局、装饰框架
一.SiteMesh项目简介 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容 ...
- SHH入门:Spring框架简介
(1)Spring 七大模块 核心容器:核心容器提供Spring 框架的基本功能.核心容器的主要组件是 BeanFactory,它是工厂模式的实现.BeanFactory 使用控制反转 (IOC) 模 ...
- .NET轻量级MVC框架:Nancy入门教程(二)——Nancy和MVC的简单对比
在上一篇的.NET轻量级MVC框架:Nancy入门教程(一)——初识Nancy中,简单介绍了Nancy,并写了一个Hello,world.看到大家的评论,都在问Nancy的优势在哪里?和微软的MVC比 ...
- 快速入门系列--WebAPI--03框架你值得拥有
接下来进入的是俺在ASP.NET学习中最重要的WebAPI部分,在现在流行的互联网场景下,WebAPI可以和HTML5.单页应用程序SPA等技术和理念很好的结合在一起.所谓ASP.NET WebAPI ...
- 【军哥谈CI框架】之入门教程之第二讲:分析CI结构和CI是怎么工作的
[军哥谈CI框架]之入门教程之第二讲:分析CI结构和CI是怎么工作的 之入门教程之第二讲:分析CI结构和CI是如何工作的大家好!上一节,我们共同部署了一个CI网站,做到这一点非常简单,但是,亲们, ...
- Google C++测试框架系列:入门
Google C++测试框架系列:入门 原始链接:V1_6_Primer 注 GTest或者Google Test: Google的C++测试框架. Test Fixtures: 这个词实在找不到对应 ...
- python爬虫入门(六) Scrapy框架之原理介绍
Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...
- 定时任务框架Quartz-(一)Quartz入门与Demo搭建
注:本文来源于:是Guava不是瓜娃 <定时任务框架Quartz-(一)Quartz入门与Demo搭建> 一.什么是Quartz 什么是Quartz? Quartz是OpenSympho ...
- 无锁并发框架Disruptor学习入门
刚刚听说disruptor,大概理一下,只为方便自己理解,文末是一些自己认为比较好的博文,如果有需要的同学可以参考. 本文目标:快速了解Disruptor是什么,主要概念,怎么用 1.Disrupto ...
随机推荐
- 。。。Hibernate 查询数据 事务管理。。。
在Hibernate中,查询数据的时候,可能会需要事务的管理,为什么呢?因为在查询数据库的时候,Hibernate将数据从数据库里面查询出来之后,会先把数据放入Hibernate的session缓存里 ...
- linux下MYSQL备份与恢复
1.用命令实现备份 数据库备份是很重要的.如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少.MySQLl提供了一个mysqldump命令,我们可以用它进行数据 ...
- SQL Server XML基础学习之<7>--XML modify() 方法对 XML 数据中插入、更新或删除
/*------------------------------------------------------------------------------+ #| = : = : = : = : ...
- 夺命雷公狗—angularjs—5—ng-switch的用法实现下拉更换板块的实现
这个方法一般都会是和别的块状元素进行绑定同时使用的,废话不多说,直接上代码: <!doctype html> <html lang="en"> <he ...
- 夺命雷公狗---node.js---6net模块玩telnet通信(下)
我们来升级玩玩,废话不多说,代码如下所示: /** * Created by leigood on 2016/8/12. */ var net = require('net'); var ChatSr ...
- centos的网路配置文件的位置
在这个路径下:/etc/sysconfig/network-scripts/ 每个网卡有相应的配置文件
- zw版【转发·台湾nvp系列Delphi例程】HALCON DispCross
zw版[转发·台湾nvp系列Delphi例程]HALCON DispCross procedure TForm1.Button1Click(Sender: TObject);var r, c : Ol ...
- C#和JavaScript交互(asp.net前台和后台互调)总结 (转)
http://www.cnblogs.com/poleices/archive/2011/02/24/1963727.html C#代码与javaScript函数的相互调用: 1.如何在JavaScr ...
- TortoiseSVN提交文件的时候卡死
提交文件的时候卡死,查找很久,才发现原来是IP被修改了,郁闷
- CSS中的各个选择节点,都有样式最后一个无样式的快捷解决方法
2.1.3 多标签 多标签选择器一般和html上下文有关,它有以下集中分类 选择一个祖先的所有子孙节点,例如 div p{…} 选择一个父元素的所有直属节点,例如 div > p{…} 选择某一 ...