Struts中Tilts标记的使用

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模板创建复合式网页

 

(1)XML 配置:定义一个 tiles-defs.xml
<? 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指定一个模版页面:
------------------------------------------------------------------------------------------

 

2 // /*******/jsp/templete.jsp页面*********/
<% @ 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 >
采用Tiles模板机制,大大提高了代码的可重用性和可维护性,模板中包含了网页共同的布局。如果布局发生变化,只需要修改模板文件,无需修改具体的网页文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值