原文: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. Jsp Layout 布局页

    本文章仅用于知识记录 /WEB-INF/tags/layout.tag <%@ tag language="java" pageEncoding="UTF-8&qu ...

  2. BZOJ 4765: 普通计算姬 (分块+树状数组)

    传送门 解题思路 树上的分块题,,对于修改操作,每次修改只会对他父亲到根这条链上的元素有影响:对于查询操作,每次查询[l,r]内所有元素的子树,所以就考虑dfn序,进标记一次,出标记一次,然后子树就是 ...

  3. js微信禁止分享

    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js ...

  4. CentOS6安装docker、docker-compose、docker-enter

    一.安装docker 1.查看CentOS内核版本 uname -r 2.安装Fedora的EPEL源 yum install http://ftp.riken.jp/Linux/fedora/epe ...

  5. 新启vue_cli项目+引入Element

    [1]安装vue_cli vue init webpack 项目名字 [2]安装Element-UI cnpm install element-ui -S //写入dependencies cnpm ...

  6. 科普 | 编译 V8 源码

    2017-02-13 justjavac 象尘说 对于JavaScript程序员来说,可以瞧一瞧justjavac给大家写的科普类读物,V8引擎的分析,“也许你不懂C++”,但是你可以了解一下,总是好 ...

  7. PAT甲级——A1061 Dating

    Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh4hhGE 2984akDfkkkkg ...

  8. PAT甲级——A1047 Student List for Course

    Zhejiang University has 40,000 students and provides 2,500 courses. Now given the registered course ...

  9. PAT甲级——A1028 List Sorting

    Excel can sort records according to any column. Now you are supposed to imitate this function. Input ...

  10. spring基于接口的代理报错

    报错: 1.在service层加上@Transactional注解.浏览器端报错(如下),eclipse控制台无信息 2.去掉@Transactional注解,无报错,但是数据库没有信息插入. 解决方 ...