Struts Tiles框架使用(转)
原文: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 © 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框架使用(转)的更多相关文章
- 教你如何精通Struts:Tiles框架
Tiles框架特性和内容 Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离.它允许先创建模板,然后在运行时动态地将内容插入到模板中.Tiles 框架建立在JSP的inclu ...
- 分分钟知道tiles框架是干嘛的
分分钟知道tiles框架是干嘛的 http://blog.sina.com.cn/s/blog_a123d4d50101792d.html参考上面的文章,简单明了.让你一下子就知道这个是用来做什么的. ...
- 掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构
掌握Tiles 框架 (一)---Tiles入门和Tiles 框架和体系结构 入门 本教程所讲述的内容 本教程讲述如何使用 Tiles 框架来创建可重用的表示组件.(在最初创建它时,Tiles 框架被 ...
- 使用Struts 2框架实现文件下载
从服务器发送一个文件到浏览器需要以下几个步骤 把HTTP响应里的ContentType标头设置为被下载文件的内容类型.ContentType标头的作用是表明数据包里的数据是什么类型, 它由一个多媒体类 ...
- Springmvc整合tiles框架简单入门示例(maven)
Springmvc整合tiles框架简单入门示例(maven) 本教程基于Springmvc,spring mvc和maven怎么弄就不具体说了,这边就只简单说tiles框架的整合. 先贴上源码(免积 ...
- SpringMVC整合Tiles框架
SpringMVC整合Tiles框架 Tiles组件 tiles-iconfig.xml Tiles是一个JSP布局框架. Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离 ...
- JavaWeb_(Spring框架)在Struts+Hibernate框架中引入Spring框架
spring的功能:简单来说就是帮我们new对象,什么时候new对象好,什么时候销毁对象. 在MySQL中添加spring数据库,添加user表,并添加一条用户数据 使用struts + hibern ...
- 【JSP】Tiles框架的基本使用
Tiles介绍 Tiles 是一种JSP布局框架,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护. Tile ...
- Struts 2 框架相比Struts1的新特性
POJO形式和POJO动作 - 已经摆脱了Struts2的动作表单的Struts框架的一个组成部分.Struts2可以使用任何的POJO接收的形式输入.同样的,你现在可以看到任何POJO的Action ...
随机推荐
- 【BZOJ4407】于神之怒加强版
题面 题目分析 \[ \begin{split} \sum\limits_{i=1}^n\sum\limits_{j=1}^mgcd(i,j)^k&=\sum\limits_{d=1}^nd^ ...
- thinkphp 命名范围
在应用开发过程中,使用最多的操作还是数据查询操作,凭借ThinkPHP的连贯操作的特性,可以使得查询操作变得更优雅和清晰,命名范围功能则是给模型操作定义了一系列的封装,让你更方便的操作数据. 命名范围 ...
- vue基础知识总结
vue不支持安卓6.0以下版本,切记!!! 1.创建vue实例 var vm = new Vue({ el: '#app', //所指向的dom的id data:{ }, //与dom元素绑定的数据 ...
- 解决git每次输入密码,设置gitlab、github默认push的用户名和密码
git ssh key配置&解决git每次输入密码 欢迎加入qq群(IT-程序猿-技术交流群):757345416 在使用git时,每次pull/push都需要输入密码,有时大大降低了我们 ...
- iOS开发NSFetchedResultsController的使用CoreData和TableView数据同步更新
1.效果 2.代码 #import "ViewController.h" #import "Student+CoreDataProperties.h" #def ...
- 北京信息科技大学校赛 题解 | AK记录贴
比赛链接:https://ac.nowcoder.com/acm/contest/940#question 花了一天时间全部解决,题目不难,全是基础题+模板题. A - kotori和糖果 链接:ht ...
- 使用Java代码获取Java进程ID的方法
需要jre/lib下的tools.jar包 public class Test { public static void main(String[] args) throws Exception { ...
- 如何使用Pig集成分词器来统计新闻词频?
散仙在上篇文章中,介绍过如何使用Pig来进行词频统计,整个流程呢,也是非常简单,只有短短5行代码搞定,这是由于Pig的内置函数TOKENIZE这个UDF封装了单词分割的核心流程,当然,我们的需求是各种 ...
- Android 开发 防止按键连续点击
前言 按键防止连续点击是任何一个项目都要考虑的功能.下面我们将介绍几种防止按键连续点击的方法 用工具类实现 /** *@content:按键延时工具类,用于防止按键连点 *@time:2019-5-1 ...
- leetcode 324 Wiggle Sort 2
利用中位数的概念,中位数就是将一组数分成2等份(若为奇数,则中位数既不属于左也不属于右,所以是2等份),其一组数中任何一个元素都大于等于另一组数 那么我们是不是只要一左一右配合着插入,就保证了差值+- ...