掌握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 ...
随机推荐
- ANDROID模拟火花粒子的滑动喷射效果
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 开篇废话: 年前换了一个手机,SONY的Z3C.这个手机在解锁屏幕时有一个滑动动画,类似火 ...
- 玩转HTML5移动页面(动效篇)(转载)
本文转载自: 玩转HTML5移动页面(动效篇)
- 对于Mybatis在C#.Net中个人使用的总结(一) Mybatis 的结果映射
(图片中的文字上传之后就都看不清,我再图片的下边会用斜体字标清) 首先我在项目中使用Mybatis 是用XML完成映射的.至于XML这门语言,其实很简单的(对于入门来说,因为我是刚入门哈~),如果你还 ...
- Azure Deploy
http://msdn.microsoft.com/en-us/library/dn408531.aspx https://www.windowsazure.com/en-us/documentati ...
- ASP.NET MVC 返回JsonResult序列化内容超出最大限制报错的解决办法
在使用MVC的时候我们经常会在Controller的Action方法中返回JsonResult对象,但是有时候你如果序列化的对象太大会导致JsonResult从Controller的Action返回后 ...
- DirectX 绘制
先上图.后面会描写 ,细节
- COM编程之三 QueryInterface
[1]IUnknown接口 客户同组件交互都是通过接口完成的. 在客户查询组件的其它接口时,也是通过接口完成的.而那个接口就是IUnknown. IUnknown接口的定义包含在Win32SDK中的U ...
- Mac系统之----教你怎么显示隐藏文件,或者关闭显示隐藏文件
缺省情况下,在 Mac 下是不显示隐藏文件的,Finder 也未提供设置是否显示隐藏文件的选项,不像 Windows 下,有一个“文件夹选项“设置界面里可以控制,但这并不表示 Mac 下无法显示隐藏文 ...
- linux下echo命令详解(转)
linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上显示一段文字,一般起到一个 ...
- POJ 1260:Pearls(DP)
http://poj.org/problem?id=1260 Pearls Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8 ...