struts中有很多好用的标记,如logic,html,bean。。
不过有一个标记用得很少,struts-tiles.tld标记
Tiles框架特性和内容
Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。它允许先创建模板,然后在运行时动态地将内容插入到模板中。Tiles框架建立在JSP的include指令的基础上,但它提供了比JSP的 include指令更强大的功能。Tiles框架具有如下特性:
·创建可重用的模板
·动态构建和装载页面
·定义可重用的Tiles组件
·支持国际化
Tiles框架包含以下内容:
·Tiles标签库
·Tiles组件的配置文件
·TilesPlugIn插件
采用Tiles:Insert标签创建复合式网页
Tiles标签库的tiles:insert标签和JSP include指令具有相同的功能,也能把其他的JSP页面插入到当前页面中。用tiles:insert标签取代JSP include指令来创建复合式页面,代码仅有稍微的差别,两者的利弊也很相似。单纯使用tiles:insert标签来创建复合式页面,还没有充分发挥Tiles框架的优势。
以下两条语句的作用是相同的:
<jsp:include page="test.jsp"/>
<tiles:insert page="test.jsp"/>
采用Tiles模板创建复合式网页
<? xml version="1.0" encoding="UTF-8" ?>
<! 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 ="lanzhengwu.mainlayout" path ="/jsp/templete.jsp" >
< put name ="title" value ="WEB企业人事管理系统" ></ put >
< put name ="header" value ="/jsp/head.jsp" ></ put >
< put name ="left" value ="/jsp/left.jsp" ></ put >
< put name ="main" value ="/jsp/main.jsp" ></ put >
< put name ="footer" value ="/jsp/tail.html" ></ put >
</ definition >
< definition name ="lanzhengwu.indexlayout" extends ="lanzhengwu.mainlayout" >
< put name ="title" value ="WEB企业人事管理系统" ></ put >
< put name ="main" value ="/jsp/main.jsp" ></ put >
</ definition >
< definition name ="lanzhengwu.allreslayout" extends ="lanzhengwu.mainlayout" >
< put name ="title" value ="WEB企业人事管理系统>>所有资源" ></ put >
< put name ="main" value ="/jsp/allresinfo.jsp" ></ put >
</ definition >
< definition name ="lanzhengwu.respublayout" extends ="lanzhengwu.mainlayout" >
< put name ="title" value ="WEB企业人事管理系统>>资源发布" ></ put >
< put name ="main" value ="/jsp/respub.jsp" ></ put >
</ definition >
< definition name ="lanzhengwu.resourceinfolayout" extends ="lanzhengwu.mainlayout" >
< put name ="title" value ="WEB企业人事管理系统>>资源信息" ></ put >
< put name ="main" value ="/jsp/resourceinfo.jsp" ></ put >
</ definition >
</ tiles-definitions >
definition元素的name属性指定Tiles组件的名字,组件的name属性是唯一的,extends属性为继承指定的模版,如java类的继承,子类拥有父类的所有属性,如上面的lanzhengwu.indexlayout就会拥有lanzhengwu.mainlayout的样式,他也有像JAVA类中的重写方法,重写的话就会覆盖父类,
,path属性指定Tiles组件使用的模板,definition元素的put子元素用于向模板中插入具体的网页内容。
用path指定一个模版页面:
------------------------------------------------------------------------------------------
<% @ page contentType = " text/html;charset=gbk " %>
<% @taglib uri = " /WEB-INF/struts-tiles.tld " prefix = " tiles " %>
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " >
< html >
< head >
< base href = " <%=basePath%> " >
< title >< tiles:getAsString name = " title " /></ title > /**/ /*从XML页面取得定义的标题*/
</ head >
< tiles:insert attribute = " header " ></ tiles:insert > /**/ /*从XML页面取得定义的头文件*/
< body >
< table align = center >
< tr >
< th align = " left " valign = " top " >< tiles:insert attribute = " left " ></ tiles:insert ></ th >
/** */ /*********/ * 从XML页面取得定义的左页面 * /** */ /****/
< th align = " center " valign = " top " >< tiles:insert attribute = " main " ></ tiles:insert ></ th >
/** */ /*****************************/ * 从XML页面取得定义的主页面 * /** */ /********/
</ tr >
</ table >
</ body >
</ html >
< tiles:insert attribute = " footer " ></ tiles:insert >
/** */ /*******************/ * 从XML页面取得定义的尾页面 * /** */ /***********/
------------------------------------------------------------------------
(3)在Strut配置文件中配置TilesPlugin插件,代码如下:
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
<set-property property="definitions-parser-validate" value="true" />
<!--
·definitions-config参数:指定Tiles组件的配置文件,如果有多个配置文件,则它们之间用逗号分隔。
·definitions-parser-validate参数:指定XML解析器是否验证Tiles配置文件,可选值包括true和false,默认值为true。
-->
</plug-in>
-------------------------------------------------------------------
像上面那样的用的<tiles:insert attribute="left"></tiles:insert>来导入页面,在XML中定义
模版的话,就可以直接导入模版来作为一个页面,如下面这样:
<tiles:insert definition="lanzhengwu.allreslayout"></tiles:insert>
就会以‘/jsp/allresinfo.jsp‘替换主页面,用"WEB企业人事管理系统>>所有资源"来替换标题.
如下面这个页面:
-------------------------------------------------------------------
<% @ page contentType = " text/html;charset=gbk " %>
<% @taglib uri = " /WEB-INF/struts-tiles.tld " prefix = " tiles " %>
<! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " >
< html >
< head >
</ head >
<% String act = request.getParameter( " act " );
if ( " res " .equals(act)) ... {
%>
<tiles:insert definition="lanzhengwu.allreslayout"></tiles:insert>
<%} else if ( " respub " .equals(act)) ... { %>
<tiles:insert definition="lanzhengwu.respublayout"></tiles:insert>
<%} %>
</ html >