struts Tiles框架

     Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。允许先创建模板,然后在运行时动态地将内容插入到模板中。 

   在我们已知的创建符合式网页的方法中,包括:

  采用基本的JSP语句创建符合式网页。这种方法会导致JSP代码的大量冗余,后果是重复编码、多处修改,大大增加开发和维护成本。

  采用JSP的include指令创建符合式网页。和第一种方案相比,尽管采用JSP的include指令创建的复合式网页减少了重复代码,但不能完全避免代码冗余。同时JSP文件的数量增加了,使软件的复杂度也增加了。

  采用<tiles:insert>标签创建符合式网页。这种方法和JSP的include指令拥有相同的功能,同时也有着相同的利弊。

  采用Tiles模板创建符合式网页。Tiles模板是一种描述页面布局的JSP页面,Tiles模板只定义了Web页面的样式,而不指定内容。在Web页面运行时,才把特定的内容插入到模板中。使用Tiles模板的步骤是:

  (1) 安装Tiles标签库所需要的文件;

  (2) 定义模板文件,模板文件是指定义了网页布局,但不包含具体网页内容的JSP页面;

  (3) 在页面中运用定义好的Tiles模板,运用Tiles模板是通过<tiles:insert>标签和<tiles:put>子标签来定义的。

  Struts还在Tiles框架中引入了Tiles组件的概念。Tiles组件可以代表一个完整的网页,也可以代表网页的一部分。简单的Tiles组件可以组成复杂的Tiles组件,或被扩展为复杂的Tiles组件。Tiles组件的使用步骤:

  (1) 安装Tiles标签库所需要的文件;

  (2)  定义模板文件,模板文件是指定义了网页布局,但不包含具体网页内容的JSP页面。在模板JSP页面中通过<tiles:insert attribute="pageName"> 标签来预留页面将要加载的位置。

  (3) 在专门的XML文件中配置Tiles组件。如下配置一个default-definition组件(其中pageName与<tiles:insert>标签中的pageName对应):

  <tiles:definitions>

    <definition name="default-definiton" path="...../layout.jsp">

      <put name="pageName" value="...../jspName.jsp">

      ......

    </definiton>

  </tiles-definitions>

  (4) 在Struts配置文件中配置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"/>

   </plug-in>

  TilesPlugin插件用于加载Tiles组件的配置文件,在<plug-in>元素中包含几个<set-property>子元素,用于向

TilesPlugin插件传入附加的参数:

  definitions-config参数:指定Tiles组件的配置文件。如果有多个配置文件,则它们之间用逗号分隔。

  definitions-parser-validate参数:指定XML解析器是否验证Tiles配置文件,可选值包括true和false,默认值为

true。

  (5) 为保证TilesPlugin插件在Web应用启动时加载,在web.xml文件中配置ActionSerlvet(在MyEclipse中添加Struts支持,会默认配置好ActionServlet)。ActionServlet控制器在初始化时会加载所有插件。

  (6) 最后在需要应用Tiles组件的JSP页面中通过<tiles:insert definiton="default-definiton">标签,插入Tiles组件。(其中default-definiton对应于(3)中的default-definiton)

  如果Tiles组件是一个完整的网页,还可以直接通过Struts Action来访问Tiles组件。只要如下配置好一个action就可以在页面中访问:

  <action   path="/default"

      type="org.apache.struts.actions.ForwardAction"

      parameter="definitions-config">

  </action>

  此外,Tiles组件还有两个非常有用的特性:

  Tiles组件的可组合性。Tiles组件作为一种可重用的组件,可以像搭积木一样,把简单的Tiles组件组装成复杂的Tiles组件:

  <tiles-definitions>

    <definiton name="side-definiton" path="......./sidelayout.jsp">

      <put name="top" value="top.jsp">

      <put name="bottom" value="bottom.jsp">

    </definiton>

    <definiton name="content-definiton" path="....../contentlayout.jsp>

      <put name="side" value="side-definiton" type="definiton">

      <put name="content" value="content.jsp">

    </definiton>

  </tiles-definitons>

  Tiles组件的可扩展性。Tiles组件可以像Java类一样,被子Tiles组件继承,子Tiles拥有父Tiles组件的所有特性,从而进一步消除代码冗余。

  <tiles-definitions>

    <definiton name="base-definiton" path="......./baselayout.jsp">

      <put name="header" value="header.jsp">

      <put name"content" value="">

      <put name="footer" value="footer.jsp">

    </definiton>

    <definiton name="content-definiton" extends="base-definiton">

      <put name="content" value="content.jsp">

    </definiton>

  </tiles-definitons>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值