1 struts1 tiles 模板
就是一个jsp文件.里面使用了一些标签.
常用占位符标签,模板里面的占位符需要被具体的值替代,
1) 字符串:使用<tiles:getAsString>标签进行占位。如<tiles:getAsString name = "title" />。
<tiles:getAsString name = "title" /> 这个标签定义字符占位符,被字符值替代
2) Web资源(包括JSP、Servlet、HTML等):使用<tiles:insert>标签来占位,如<tiles:insert attribute="header" />。
<tiles:insert attribute="header" /> 这个提供属性占位符,定义了一个header属性
比如定义了一个模板 layout.jsp.
2. 在普通jsp页面里面使用上面的模板
下面我们来使用这个模板。在Web根目录中建立一个mypage.jsp文件,代码如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insert page="layout.jsp">
<tiles:put name="title" value="我的页面" />
<tiles:put name="border" value="${param.border}"/>
<tiles:put name="header" value="header.jsp"/>
<tiles:put name="body" value="body.jsp"/>
<tiles:put name="footer" value="footer.jsp"/>
</tiles:insert>
使用 <tiles:insert page="layout.jsp"> 定义要使用的模板,里面子元素
<tiles:put name="border" value="${param.border}"/> put是给模板里面占位符 赋值的.
3. 在普通页面要引入模板时,为了避免重复代码,可以在一个文件中定义,
这个文件一般为:WEB-INF目录中建立一个tiles-defs.xml文件
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://struts.apache.org/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="myLayout" path="/layout.jsp">
<put name="title" value="我的页面" />
<put name="header" value="header.jsp" />
<put name="body" value="body.jsp" />
<put name="footer" value="footer.jsp" />
</definition>
</tiles-definitions>
<definition name="myLayout" path="/layout.jsp"> 中的path中指定的是一个模板文件
下面的<put name="title" value="我的页面" />子元素,就是定义了所有引用layout.jsp
模板时都需要指定的属性,相当于为模板指定了公共的属性值.
4. 上面tiles-definitions如何使用
在一个普通的jsp页面中使用下面代码
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insert definition="myLayout">
<tiles:put name="border" value="${param.border}"/>
</tiles:insert>
<tiles:insert definition="myLayout"> 这个标签就使用3中定义的
可以重复使用的Tiles标签.
----------详细说明:
转自 http://www.blogjava.net/nokiaguy/archive/2009/02/27/257067.html
Tiles提供的模板机制可以最大限度地避免重复编写代码。实际上,Tiles模板就是的JSP页面,只是在这种JSP页面中使用
Tiles标签代替确定不了的内容(相当于占位符),也就是需要在开发人员使用模板时来确定的内容。除了这一点,Tiles模板
页面和普通的JSP页面完全相同。
一般的模板页面可以有如下两种占位符:
1. 字符串:使用<tiles:getAsString>标签进行占位。如<tiles:getAsString name = "title" />。
2. Web资源(包括JSP、Servlet、HTML等):使用<tiles:insert>标签来占位,如<tiles:insert
attribute="header" />。
下面我们来看一下如何编写一个Tiles模板。在Web根目录中建立一个layout.jsp文件,代码如下:
<%@ page pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<html>
<head>
<title><tiles:getAsString name="title" /></title>
</head>
<body>
<table border=<tiles:getAsString name="border" />>
<tr>
<td>
<tiles:insert attribute="header" />
</td>
</tr>
<tr>
<td>
<tiles:insert attribute="body" />
</td>
</tr>
<tr>
<td>
<tiles:insert attribute="footer" />
</td>
</tr>
</table>
</body>
</html>
从上例可以看出有五处占位符,这些内容将由开发人员在使用layout.jsp模板时指定。在编写完上述模板后,在Web根目录中
建立三个在模板中使用的JSP文件,代码如下:
header.jsp
<%@ page pageEncoding="GBK"%>
这是一个页头
body.jsp
<%@ page pageEncoding="GBK"%>
这是一个页体
footer.jsp
<%@ page pageEncoding="GBK"%>
这是一个页尾
下面我们来使用这个模板。在Web根目录中建立一个mypage.jsp文件,代码如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insert page="layout.jsp">
<tiles:put name="title" value="我的页面" />
<tiles:put name="border" value="${param.border}"/>
<tiles:put name="header" value="header.jsp"/>
<tiles:put name="body" value="body.jsp"/>
<tiles:put name="footer" value="footer.jsp"/>
</tiles:insert>
从mypage.jsp页面中可以看出,在<tiles:insert>标 签中通过page属性插入了layout.jsp页面(也就是Tiles模板),并
且在<tiles:insert>标签中使用了< tiles:put>子标签为layout.jsp页面中的占位标签指定参数值。如果是
<tiles:getAsString>标签, 就会将<tiles:put>标签中的value属性值解释为字符串;如果是<tiles:insert>标签,就会将<
tiles:put>标签中的value属性值解释为Web资源。大家可以看到,如果有多个使用layout.jsp模板的JSP页面,都可以按着
mypage.jsp页面的方式使用这个layout.jsp模板,而无须再重复编写象table这样的HTML元素。
在启动Tomcat后,我们可以使用如下两个URL来测试程序:
http://localhost:8080/samples/mypage.jsp?border=1
http://localhost:8080/samples/mypage.jsp?border=0
注意:由于<tiles:insert>和<jsp:include>标签类似,被插入或包含的Web资源都无法改面当前页面的字符集编码,因此,在
使用Tiles模板时,即使在当前页没有使用中文,也应该使用page指令设置相应的字符集编码。如果没有设置,当模板页面中
有中文字符时,即使模板页面使用了正确的字符集编码,在当前页面仍然无法正常显示中文字符。
上面曾讲过,Tiles框架的目的就是最大限度地避免重复编写代码。而上面的例子虽然已经基本上避免了重复编码的工作
,但仍然可能会存在一些重复的代码。如在mypage.jsp页面中的<tiles:put>标签。如果有很多页面都需要插件页头、页尾,
那么就会有很多插入相同页面的<tiles:put>标签被分布在不同的JSP页面中。因此,Tiles框架又提供了一个定义文件,来定
义些重复使用的Tiles标签。在使用定义文件之前,需要首先安装Tiles插件(如果不使用定义文件,是不需要安装Tiles插件的
)。
下面我们来将上面的部分代码放到定义文件中。在WEB-INF目录中建立一个tiles-defs.xml文件,代码如下:
<?xml version="1.0" encoding="GBK" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://struts.apache.org/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="myLayout" path="/layout.jsp">
<put name="title" value="我的页面" />
<put name="header" value="header.jsp" />
<put name="body" value="body.jsp" />
<put name="footer" value="footer.jsp" />
</definition>
</tiles-definitions>
在上面的代码中定义了一个<definition>元素。并且使用< put>元素对四个属性:title、header、body和footer赋值。因此
,如果使用这个定义文件,就可以无需使用< tiles:put>标签再赋一遍值了。在Web根目录中建立一个newpage.jsp文件,代码
如下:
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
<tiles:insert definition="myLayout">
<tiles:put name="border" value="${param.border}"/>
</tiles:insert>
newpage.jsp页面的功能和mypage.jsp页面完全一样,只是代码要简单 得多。由于只有border属性需要设置,因此,在
newpage.jsp页面中只要设置这一个属性即可。而在<tiles:insert> 标签中使用了definition属性指定了“myLayout”。这个
值就是在tiles-defs.xml中<definition>元 素的name属性值。
在启动Tomcat后,我们可以使用如下的URL来测试newpage.jsp:
http://localhost:8080/samples/newpage.jsp?border=1
为了更好的复用,在定义文件中的<definition>元素也可以继承其他的<definition>,如我们可以在tiles-defs.xml文件
中加一个<definition>元素,来继承myLayout,代码如下:
<definition name="myLayout.newLayout" extends="myLayout">
<put name="title" value="新的页面" />
</definition>
上面的代码覆盖了myLayout中的title属性,其他的属性值都继承了myLayout中相应的属性值。其中name属性的值中的“.
”是为了表明这个新的<definition>元素是从myLayout继承的,没有特殊的含义。
相关推荐
模板搭建源码可运行
在开发中经常使用的sturts中的tiles模板,是页面看起来更加的合理,减少页面的组合,需要使用的jar包,缺一不可。
Struts-2.1.6整合Tiles2全攻略
commons-beanutils-1.7.0.jar,commons-collections-2.1.jar,commons-digester-1.8.jar,struts2-tiles-plugin-2.0.14.jar, tiles-api-2.0.4.jar,tiles-core-2.0.4.jar, tiles-jsp-2.0.4.jar
页面模板tiles,前台页面模板生成,可以和struts一起使用。
第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...
,Struts Tiles 框架提供了一种模板机制,模板定义了网页的 布局,同一模板可以被多个Web 页面共用。此外,Tiles 框架还允许定义可重用的Tiles 组 件,它可以描述一个完整的网页,也可以描述网页的局部内容。简单的...
为了简化Web页面的开发,提高可重用性和可扩展性,Struts Tiles框架提供了一种模板机制,模板定义了网页的布局,同一模板可以被多个Web页面共用。此外,Tiles框架还允许定义可重用的Tiles组件,它可以描述一个完整的...
1.3 JSP流行模板Struts的安装配置 8 1.4Struts 用户指南 8 1.5 你的第一个struts应用程序 8 第2章深入Struts结构 8 2.1人介绍应用框架 mvc和model2 8 2.2 Struts原理、开发及项目实施 8 2.3使用STRUST控制流 8 2.4...
1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................
1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................
配置Tiles框架 660 内容总结 661 独立实践 661 第三十三章:Struts标记库 662 学习目标 662 Struts标记库taglib介绍 663 Bean标记 663 逻辑标记 665 转发和重定向标记 668 HTML标记 669 显示错误信息的标记 673 其他...
优点: 对覆盖绑定(overriding binding)、验证(validation)等提供生命周期管理 与许多表示层技术/框架无缝集成:JSP/JSTL、Tiles、Velocity、FreeMarker、Excel、XSL、PDF 等 便于测试——归功于IoC 缺点: ...
2.Tiles模板技术:整合struts2的titles2的模板技术,是jsp页面有了模拟继承和模块化效果 3.URA权限设计,采用user-role-authority的数据库五表映射的权限管理,达到系统真正的权限颗粒化管理,是款优秀的权限解决...
另外,对Struts 1.x的支持被独立成 'spring-webmvc-struts.jar'。 注意:经常被使用的的Spring的DispatcherServlet也是Spring Web MVC框架中的一部分。因此,就算你只是为了远程访问(例如,暴露Hessian或者 HTTP...
14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. ...
14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. ...
1. spring-aop-4.1.1.RELEASE.jar Spring面向切面编程,提供AOP实现。Spring Beans之上将横切关注点模块化 2. spring-aspects-4.1.1.RELEASE.jar 提供的对AspectJ框架的整合,也是A面向切面编程。 AspectJ可用于...
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...
14.4.3. 创建模板 14.4.4. 高级配置 14.4.5. 绑定支持和表单处理 14.5. XSLT 14.5.1. 写在段首 14.5.2. 小结 14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. ...