原文:Struts Tiles框架使用

Tiles框架

++YONG原创,转载请声明

Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。它用模板定义网页布局,每个页面模板都是一个简单的 JSP 页,它定义了一些由占位符组成的外形,以放置内容。执行时,Tiles 将会用相应的内容来替换占位符,因此,创建整个页面即形成布局。Tiles框架是建立在JSP的include指令基础上的,但它提供了比JSP的include指令更强大的功能。Tiles框架具有如下特性:

1.         创建可重用的模板

2.         动态构建和装载页面

3.         定义可重用的Tiles组件

4.         支持国际化。

接下来就介绍Tiles框架的基本使用。

1.         设置Tiles模板引擎

在Struts 中,Tiles随着它一同发布。如果您要自行设定Tiles,您必须要有commons-beanutils.jar、commons-logging.jar、commons-collections.jar、commons-digester.jar、struts.jar四个jar文件在您的WEB-INF/lib目录中。

虽然Stuts附带了Tiles,但在默认情况下是Tiles是未启用的。要启用Tiles框架,要在struts-config.xml中加入以下的内容:

<plug-in className="org.apache.struts.tiles.TilesPlugin" >

<!-- Path to XML definition file -->

<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />

<!-- Set Module-awareness to true -->

<set-property property="moduleAware" value="true" />

</plug-in>

完成之后,您就可以开始使用Tiles的功能了。

2.         使用XMl配置模板资源

在Tiles中,您可以用XML或JSP文件来做配置文件,用它来管理页面配置的相关资源,当应用程序启动时,Tiles框架会加载这个文件把它放置在内存。这个配置文件(本文采用XML文件)的路径和名称在如上文配置中已经指定了,即放置在/WEB-INF/下,名为tiles-defs.xml,在当中如下撰写:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE tiles-definitions PUBLIC

"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"

"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">

<tiles-definitions>

<!--classicLayout-->

<definition name="layout.base" path="/layouts/classicLayout.jsp">

<put name="title" value="++YONG" />

<put name="header" value="/template/header.jsp" />

<put name="menu" value="/template/menu.jsp" />

<put name="footer" value="/template/footer.jsp" />

<put name="body" value="/template/body.jsp" />

</definition>

<!-- 后台管理 -->

<definition name="layout.backmanager"path="/layouts/classicLayout.jsp">

<put name="title" value="Back Manager" />

<put name="header" value="/template/back_header.jsp" />

<put name="menu" value="/back/menu.jsp" />

<put name="body" value="/back/main.jsp" />

<put name="footer" value="/template/footer.jsp" />

</definition>

<!-- 前台首页 -->

<definition name="front.main" extends="layout.base">

</definition>

<!-- 后台管理-首页 -->

<definition name="back.main" extends="layout.backmanager">

</definition>

<!-- 后台管理-新增用户 -->

<definition name="back.addUser" extends="layout.backmanager">

<put name="title" value="Add User" />

<put name="body" value="/back/addUser.jsp" />

</definition>

</tiles-definitions>

该文件中定义了5个布局模板,以第一个为例:它的逻辑名叫layout.base,它的用于布局的页面是放在Web应用程序根目录/layouts目录下的classicLayout.jsp文件,此文件中的占位符名分别为title,header,menu,body,footer,它们的真实替代内容分别是”++YONG”, /template/header.jsp,/template/menu.jsp,/template/body.jsp,/template/footer.jsp。

3.         创建用于布局的JSP文件

从上文中可看出,用于布局的JSP文件是放置在Web应用程序/layouts目录下的classicLayout.jsp文件:

该文件的内容:

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

<html>

<head>

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

</head>

<body bgcolor="#ffffff" text="#000000" link="#023264" alink="#023264"

vlink="#023264">

<table border="0" width="768px" height="98%" cellspacing="5"align="center">

<tr height="100px">

<td colspan="2">

<tiles:insert attribute="header" />

</td>

</tr>

<tr  height="1px">

<td colspan="2">

<hr>

</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 height="1px">

<td colspan="2">

<hr>

</td>

</tr>

<tr height="50px">

<td colspan="2">

<tiles:insert attribute="footer" />

</td>

</tr>

</table>

</body>

</html>

文件中主要用到tiles标签库中的标签来充当页面具体内容的占位符,当Web应用程序启动加载完Tiles的配置文件后,用户请求该模板时,Tiles就会根据配置文件用具体的内容(文字或内容页面)替换占位符,从而给用户生成布局完整的页面。

4.         创建内容JSP文件

内容JSP用于填充布局创建的占位符,这些JSP只包含填充布局的特定部分所需的HTML,创建这些JSP与您使用include创建JSP的方法相同。如下内容:

1.1      header.jsp

<a href="http://jakarta.apache.org">

<img src="<%=request.getContextPath()%>/images/jakarta-logo.gif"align="left" border="0">

</a>

<img src="<%=request.getContextPath()%>/images/struts.gif" align="right"border="0">

1.2      menu.jsp

<%@ page language="java" pageEncoding="UTF-8"%>

功能菜单 <br><br>

功能菜单 <br><br>

功能菜单 <br><br>

功能菜单 <br><br>

功能菜单 <br><br>

1.3      body.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>

<table width="590" height="500" border="0" align="center"cellpadding="0" cellspacing="0" background="green">

<tr>

<td width="590"><table width="100%" border="0" cellspacing="1"cellpadding="0">

<tr>

<td><div align="center">

<em><font size="6" color="gray"><strong>欢迎访问Struts Tiles Demo</strong></font></em>

</div></td>

</tr>

</table></td>

</tr>

</table>

1.4      footer.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<table width="100%" height="50px" border="0" align="center"cellpadding="1"

cellspacing="0">

<tr>

<td height="20" align="center">

<div align="center">

<font color="#023264" size="-1">Copyright &copy; 2007-2008, ++YONG All rights reserved.<br/>

<a href="#">联系我们</a>

</font>

</div>

</td>

</tr>

</table>

5.         使用Tiles组件:

index.jsp

<%@ page language="java" contentType = "text/html;charset=utf-8"pageEncoding="UTF-8"%>

<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles"%>

<tiles:insert definition="front.main" flush="true"/>

6.         运行效果:

7.         Tiles国际化:

Tiles完全支持国际化,只需为每种语言环境创建一个Tiles XML配置文件。针对具体语言环境的配置文件取不同的文件名,该文件名采用与java资源束相同的命名方案。如要创建适用于英文和中文语言环境的Tiles,则需要创建名为tiles-defs_en.xml和tiles-defs_zh_CN.xml的文件。运行时,Tiles根据当前请求的语言环境决定使用哪个配置文件中的定义来处理当前请求。在各个配置文件中,相同的属性应该具有相同的定义。

如上应用,创建一名为tiles-defs_zh_CN.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"

"http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">

<tiles-definitions>

<!--classicLayout-->

<definition name="layout.base" path="/layouts/classicLayout.jsp">

<put name="title" value="Tiles国际化示例" />

<put name="header" value="/template/header.jsp" />

<put name="menu" value="/template/menu.jsp" />

<put name="footer" value="/template/footer.jsp" />

<put name="body" value="/template/body.jsp" />

</definition>

<!-- 后台管理 -->

<definition name="layout.backmanager" path="/layouts/classicLayout.jsp">

<put name="title" value="Back Manager" />

<put name="header" value="/template/back_header.jsp" />

<put name="menu" value="/back/menu.jsp" />

<put name="body" value="/back/main.jsp" />

<put name="footer" value="/template/footer.jsp" />

</definition>

<!-- 前台首页 -->

<definition name="front.main" extends="layout.base">

</definition>

<!-- 后台管理-首页 -->

<definition name="back.main" extends="layout.backmanager">

</definition>

<!-- 后台管理-新增用户 -->

<definition name="back.addUser" extends="layout.backmanager">

<put name="title" value="Add User" />

<put name="body" value="/back/addUser.jsp" />

</definition>

</tiles-definitions>

Struts Tiles框架使用(转)的更多相关文章

  1. 教你如何精通Struts:Tiles框架

    Tiles框架特性和内容 Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离.它允许先创建模板,然后在运行时动态地将内容插入到模板中.Tiles 框架建立在JSP的inclu ...

  2. 分分钟知道tiles框架是干嘛的

    分分钟知道tiles框架是干嘛的 http://blog.sina.com.cn/s/blog_a123d4d50101792d.html参考上面的文章,简单明了.让你一下子就知道这个是用来做什么的. ...

  3. 掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构

    掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构 入门 本教程所讲述的内容 本教程讲述如何使用 Tiles 框架来创建可重用的表示组件.(在最初创建它时,Tiles 框架被 ...

  4. 使用Struts 2框架实现文件下载

    从服务器发送一个文件到浏览器需要以下几个步骤 把HTTP响应里的ContentType标头设置为被下载文件的内容类型.ContentType标头的作用是表明数据包里的数据是什么类型, 它由一个多媒体类 ...

  5. Springmvc整合tiles框架简单入门示例(maven)

    Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...

  6. SpringMVC整合Tiles框架

    SpringMVC整合Tiles框架 Tiles组件 tiles-iconfig.xml Tiles是一个JSP布局框架. Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离 ...

  7. JavaWeb_(Spring框架)在Struts+Hibernate框架中引入Spring框架

    spring的功能:简单来说就是帮我们new对象,什么时候new对象好,什么时候销毁对象. 在MySQL中添加spring数据库,添加user表,并添加一条用户数据 使用struts + hibern ...

  8. 【JSP】Tiles框架的基本使用

    Tiles介绍 Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护. Tile ...

  9. Struts 2 框架相比Struts1的新特性

    POJO形式和POJO动作 - 已经摆脱了Struts2的动作表单的Struts框架的一个组成部分.Struts2可以使用任何的POJO接收的形式输入.同样的,你现在可以看到任何POJO的Action ...

随机推荐

  1. ArrayBlockingQueue 和LinkedBlockQueue

    ArrayBlockingQueue ArrayBlockingQueue是Java多线程常用的线程安全的一个集合,基于数组实现,继承自AbstractQueue,实现了BlockingQueue和S ...

  2. Type.GetType(string.contains(','))

    例如 Type type = Type.GetType("ACalCoreServiceLib.BaseService,ACalCoreServiceLib"); 里面的ACalC ...

  3. 边缘节点服务ENS重磅升级 阿里云首次定义“边缘云计算”概念层层深入

    随着5G.物联网时代的到来以及云计算应用的逐渐增加,传统集中式的云计算技术已经无法满足终端侧“大连接,低时延,大带宽”的需求.结合边缘计算的概念,云计算将必然发展到下一个技术阶段,也就是将云计算的能力 ...

  4. springboot+mybatis+达梦数据库

    准备工作: 首先,安装达梦6数据库.安装完之后如下建表 然后,很重要的一点(写法一定要这样写,否则无限报错) 达梦数据库查表方式: select  *  from    "库名". ...

  5. js 面向对象几种数据模式

    一.单例模式: 把描述同一事物的属性和方法放在同一内存空间下,实现了分组的作用,防止同一属性或者方法冲突.我们把这种分组编写代码的模式叫做单例模式即普通的对象. 单例模式是项目开发中最常用的一种开发模 ...

  6. CDATA标签用法

    今天在xml文件里看到有CDATA标签的使用,   答案如下: CDATA 术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data). 在 X ...

  7. OS -- (python)文件和目录操作方法大全

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...

  8. java单元测试小结

    1. mock 构造函数 import static org.junit.Assert.*; import java.util.ArrayList; import org.junit.Test; im ...

  9. 解析Request和Response

    简介: Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象. request和response对象即然代表请求和响应 ...

  10. 在当前目录打开DOS命令行窗口

    [step1]选中文件夹 [step2]shift + 鼠标右键