`
wezly
  • 浏览: 471697 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Tiles使用简介

阅读更多

最新喜欢看一看一些比较“老旧”的技术,感觉这些东西虽然实现技术上比较老了,但是其中所蕴含的思想和构思方法还是很有借鉴意义的,随记录到博客中来慢慢品味。

一:说明
Struts1.1以后增加了Tiles包使得struts在页面的处理方面多了一种选择.并且更容易实现
代码的重用。
Tiles中对页面的划分有点象jakarta的另外一个项目Turbine中的TDK。增加了layout的概念.
其实就是把一个页面划分为几块。通常的来说一个页面大概可以划分为如下几块:
head页面头部:存放一个运用的公共信息:logo等,如果是网站可能是最上面的一块.
menu页面菜单:放置一个运用中需要使用的菜单,或者在每一个页面都使用的连接.
footer页面尾部:如版权信息等.
body页面主题内容:每个页面相对独立的内容.
如果按上面的划分那对每一个页面我们只要写body里面的内容,其他的就可以共享重用.
如果大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body.

二:Tiles配置和基本配置文件介绍
Tiles有一个配置文件:tiles-defs.xml
tiles-defs.xml定义了每一个页面的组成元素和形式。
下面我将说明如下所示的一个tiles-defs.xml文件
tiles-defs.xml
-----------------------------------------------

<tiles-definitions>
<!--定义/layouts/classicLayout.jsp的组成名称为site.mainLayout-->
<!--后面将附/layouts/classicLayout.jsp的内容-->
<definition name="site.mainLayout" path="/layouts/classicLayout.jsp">
<put name="title" value="Tiles Blank Site" />
<put name="header" value="/tiles/common/header.jsp" />
<put name="menu" value="site.menu.bar" />
<!--menu的组成为site.menu.bar对应的页面-->
<put name="footer" value="/tiles/common/footer.jsp" />
<put name="body" value="/tiles/body.jsp" />
</definition>
<!--定义site.index.page,继承site.mainLayout-->
<definition name="site.index.page" extends="site.mainLayout" >
<put name="title" value="Tiles Blank Site Index" />
<put name="body" value="/tiles/body.jsp" />
<!--以上两个元素将替换site.mainLayout中的元素-->
</definition>

<definition name="site.menu.bar" path="/layouts/vboxLayout.jsp" >
<putList name="list" >
<add value="site.menu.links" />
<add value="site.menu.documentation" />
</putList>
</definition>
</tiles-definitions>

 附:/layouts/classicLayout.jsp
--------------------------------

<html>
<head>
<title><tiles:getAsString name="title"/>
</title>
</head>

<body bgcolor="#ffffff" text="#000000" link="#023264" alink="#023264" vlink="#023264">
<table border="0" width="100%" cellspacing="5">
<tr>
<td colspan="2"><tiles:insert attribute="header" /></td>
</tr>
<tr>
<td width="140" valign="top">
<tiles:insert attribute='menu'/>
</td>
<td valign="top" align="left">
<tiles:insert attribute='body' />
</td>
</tr>
<tr>
<td colspan="2">
<tiles:insert attribute="footer" />
</td>
</tr>
</table>
</body>
</html>

 在web.xml里面配置tiles,配置完后对应struts action servlet的配置如下:
web.xml
-----------------

<!-- Action Servlet Configuration -->
<servlet>
<servlet-name>action</servlet-name>
<!-- Specify servlet class to use:
- Struts1.0.x: ActionComponentServlet
- Struts1.1: ActionServlet
- no Struts: TilesServlet
--> 
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<!-- Tiles Servlet parameter 
Specify configuration file names. There can be several comma 
separated file names
--> 
<init-param>
<param-name>definitions-config</param-name>
<param-value>/WEB-INF/tiles-defs.xml</param-value>
</init-param>

<!-- Tiles Servlet parameter 
Specify Tiles debug level.
O : no debug information
1 : debug information
2 : more debug information
--> 
<init-param>
<param-name>definitions-debug</param-name>
<param-value>1</param-value>
</init-param>

<!-- Tiles Servlet parameter 
Specify Digester debug level. This value is passed to Digester
O : no debug information
1 : debug information
2 : more debug information
--> 
<init-param>
<param-name>definitions-parser-details</param-name>
<param-value>0</param-value>
</init-param>

<!-- Tiles Servlet parameter 
Specify if xml parser should validate the Tiles configuration file.
true : validate. DTD should be specified in file header.
false : no validation
--> 
<init-param>
<param-name>definitions-parser-validate</param-name>
<param-value>true</param-value>
</init-param>

<!-- Struts configuration, if Struts is used -->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>validate</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>

<load-on-startup>2</load-on-startup>
</servlet>

 三:使用Tiles
如果已经配置好tiels-defs.xml,接下来就可以在jsp文件中使用这些定义了。
有如下的方式使用tiles
3.1:
<tiles:insert definition="site.mainLayout" flush="true" />
插入site.mainLayout标记的一页

3.2:

<tiles:insert template="/tutorial/basic/myFramesetLayout.jsp" >
<tiles:put name="title" content="My first frameset page" direct="true" />
<tiles:put name="header" content="/tutorial/common/header.jsp" direct="true"/>
<tiles:put name="footer" content="/tutorial/common/footer.jsp" direct="true"/>
<tiles:put name="menu" content="/tutorial/basic/menu.jsp" direct="true"/>
<tiles:put name="body" content="/tutorial/basic/helloBody.jsp" direct="true"/>
</tiles:insert>

 /tutorial/basic/myFramesetLayout.jsp
---------------------------------

<html>
<head>
<title><tiles:get name="title"/></title>
</head>

<frameset rows="73, *, 73">
<frame src="<%=request.getContextPath()%><tiles:get name="header" />" name="header" >
<frame src="<%=request.getContextPath()%><tiles:get name="body" />" name="body" >
<frame src="<%=request.getContextPath()%><tiles:get name="footer" />" name="footer" >
</frameset>

</html>

插入/tutorial/basic/myFramesetLayout.jsp
并把title的值设定为:My first frameset page
header设定为/tutorial/common/header.jsp


四:后记
Tiles的使用在他的文档里面写的比较详细。以上是一些简单和基本的使用。具体的文档可以看
Struts里面的一个tiles-documentation.war的包。但即使是这个包也不是很全。可以通过上的的
连接到作者的主页上去找。
个人觉得使用Tiles在做企业运用的时候可能不如在做网站那样更能体现优越性。但在系统开始
设计的时候考虑并规划好整个UI,那在修改和维护的时候将节省不少的工作量,因为通常UI的确定
在代码编写结束和完成,所有尽可能的使用多个子页面构成一个页面,后面的美化和维护就比直接
维护一个很大的页面容易。

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    struts中tiles标签简介

    struts中tiles标签简介,Tiles框架可以令我们组合可以复用的Tiles来搭建网页。

    Live Tiles 与消息推送

    •终端用户体验 •Tile 简介 •多重 Live Tiles •从后台进程更新 Live Tile •消息推送

    Spring API

    1. 简介 1.1. 概览 1.1.1. 使用场景 2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动...

    Spring中文帮助文档

    2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) ...

    Spring 2.0 开发参考手册

    1. 简介 1.1. 概览 1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加...

    spring chm文档

    Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack ...19.2. 使用Spring JMS ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    1. 简介 1.1. 概览 1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP ...

    Struts2 in action中文版

    第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 ...15.6.4 使用Tiles控制器准备网页内容 331 15.7 小结 332

    security-poc:使用Spring Security

    Spring简介 密码编码器 笔记 内存中(默认) 记忆体 在记忆中 委派 默认配置文件(不使用PasswordEncoder) 数据库 D B JDBC 没有 通过jdbcAuthentication方法(嵌入式DB的Maven依赖项) 客户服务 USER_SERVICE...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    内容简介 Struts 2 是Java Web 应用首选的MVC 框架。《深入浅出Struts2》对Struts 2 的工作机理进行了透彻的阐述。书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助...

    struts2标签库

    struts2 标签 国际化 文件上传 校验 ...struts2.0的标签库(简介) 用过struts1.x的人都知道,标签库有html、bean、logic、tiles, 而struts2.0里的标签却没有分类,只用在jsp头文件加上 就能使用struts2.0的标签库

    开源框架 Spring Gossip

    简介 Spring Inversion of Control Dependency Injection &lt;br&gt; 核心容器 Spring 核心容器实作了 IoC,BeanFactory 与 ApplicationContext 的运用是了解 Spring 的重点所在。 管理 Bean...

    Java语言基础下载

    配置Tiles框架 660 内容总结 661 独立实践 661 第三十三章:Struts标记库 662 学习目标 662 Struts标记库taglib介绍 663 Bean标记 663 逻辑标记 665 转发和重定向标记 668 HTML标记 669 显示错误信息的标记 673 其他...

    tipboard, Tipboard In-House,美味,本地dashboarding系统.zip

    tipboard, Tipboard In-House,美味,本地dashboarding系统 Tipboard 简介Tipboard是一个创建仪表板的系统,用JavaScript和 python 编写。 它的widget ('tiles'在术语中) 与数据源完全分离,提供了很大的灵活性和...

    dreamweaver的各种组件

    IE Sliding Tiles 创建一个响应鼠标事件的自动弹出式下拉菜单,实例可见http://www.webmokey.com QuickTime Object 有了这个插件,您就可以在Dreamweaver中方便地插入QuickTime文件, 程序能自动调用相关的ActiveX...

    电子商城系统设计实习报告.doc

    与许多表示层技术/框架无缝集 成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等。便于测试——归功于IoC。 Spring MVC缺点: 大量的XML配置文件,太过灵活——没有公共的父控制器,没有内置的Ajax...

    用于强化学习的 TIle Coding (CMAC):基于 CMAC 算法的线性瓦片编码函数逼近-matlab开发

    瓷砖编码的描述—— 这是一种网格风格的瓦片编码的实现。 在这里,我们提供了一个程序“getTiles”,它映射真实的变量到瓷砖列表。... 该代码基于 Sutton & Barto 所著“强化学习 - 简介”的随附材料。

Global site tag (gtag.js) - Google Analytics