• Apache Tiles 2.x 应用指南(转)


    转自:http://jaymsimusic.iteye.com/blog/1138906

    Apache Tiles 2.x 应用指南

    博客分类:
     
    Jakarta Tiles是一个用于在模板中对页面进行布局的框架。Tiles产生之初是Struts架构的一部分,后来Tiles独立出来常与Spring架构配合,本文描述了独立于其它架构而在原始WEB应用中使用Tiles的方法。 

    基本用法 
    设置Tiles元素 - 核心配置文件的书写方法 
    Tiles核心配置文件格式为xml,文档类型为tiles-definitions。要在每一个配置文件的开头加入下述说明: 

    Java代码  收藏代码
    1. <!DOCTYPE tiles-definitions PUBLIC   
    2.   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"   
    3.   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">  


    Tiles中的基本元素有三种:定义、模板和属性。Tiles核心配置文件(tiles-definitions)中的基本单元是“definition”。一个“definition”必须与一个“template” 相对应。“template”是一个URI、通常情况下指的是一个JSP页面。一个“definition”可以包含多个“attribute”,一个attribute可以是一个字符串、可以是一个定义的名字、也可以是一个模板。 
    可以使用定义描述一个带有名字的模板。下例定义了一个没有属性的模板: 

    Java代码  收藏代码
    1. <tiles-definitions>    
    2.   <definition name="header" template="/fragments/header.jsp" />    
    3. </tiles-definitions>    

    模板可以包含一个或多个属性,属性可以是一个字符串,或者是一个定义的名字,或者是一个模板。下例定义了一个包含属性的模板: 

    Java代码  收藏代码
    1. <tiles-definitions>    
    2.   <definition name="header" template="/fragments/header.jsp" />    
    3.       
    4.   <definition name="main" template="/index.jsp">    
    5.     <put-attribute name="title" value="标题名" type="string"/>    
    6.     <put-attribute name="header" value="header" type="definition"/>    
    7.     <put-attribute name="footer" value="/fragments/footer.jsp" />    
    8.   </definition>    
    9. </tiles-definitions>    



    定义可以被继承,继承之后的定义属性可以改变,模板不可以改变。下例定义了一个具有继承关系的模板: 

    Java代码  收藏代码
    1. <tiles-definitions>    
    2.   <definition name="header" template="/fragments/header.jsp" />    
    3.       
    4.   <definition name="main" template="/index.jsp">    
    5.     <put-attribute name="title" value="主画面" type="string"/>    
    6.     <put-attribute name="header" value="header" type="definition"/>    
    7.     <put-attribute name="footer" value="/fragments/footer.jsp" />    
    8.   </definition>    
    9.       
    10.   <definition name="user" extends="main">    
    11.     <put-attribute name="title" value="新建用户" />    
    12.   </definition>     
    13. </tiles-definitions>   




    读取Tiles元素 - JSP页面上的处理方法 
    要想在JSP页面上使用Tiles标签,首先要引入标签库。 

    Java代码  收藏代码
    1. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>    




    在JSP页面上插入一个模板的基本标签是<tiles:insertTemplate />,如下例: 

    Java代码  收藏代码
    1. <tiles:insertTemplate template="/fragments/footer.jsp"/>    




    如果插入的模板包含属性,则在插入模板的同时,必须使用<tiles:putAttribute />标签为其指定属性值: 

    引用
    <tiles:insertTemplate template="/index.jsp">  
      <tiles:putAttribute name="title" value="主画面"/>  
      <tiles:putAttribute name="header" value="header"/>  
      <tiles:putAttribute name="footer" value="/fragments/footer.jsp"/>  
    </tiles:insertTemplate> 




    插入一个定义的基本标签是<tiles:insertDefinition />,如下例: 

    Java代码  收藏代码
    1. <tiles:insertDefinition name="main"/>    




    在模板中可以指定属性的位置。设置一个属性的基本标签有两种,如果属性被指定为定义或模板,则使用<tiles:insertAttribute />标签;如果属性被指定为字符串,则使用<tiles:getAsString />标签。如: 
    <tiles:getAsString name="title"/>  
    <tiles:insertAttribute name="header"/>  
    <tiles:insertAttribute name="footer"/>  



    Tiles架构在各个领域中的应用 
    在Web应用中直接使用Tiles架构 
    在web.xml中加入下述servlet即可实现在Web应用中直接使用Tiles架构的目的。 

    Java代码  收藏代码
    1. <servlet>    
    2.   <servlet-name>tiles</servlet-name>    
    3.   <servlet-class>    
    4.     org.apache.tiles.servlet.TilesServlet    
    5.   </servlet-class>    
    6.   <load-on-startup>2</load-on-startup>    
    7. </servlet>    



    TilesServlet默认查找“/WEB-INF/tiles.xml”作为Tiles核心配置文件,如果要手动指定Tiles核心配置文件的位置,可以为Servlet设置名为“definitions-config”的初始化参数值,样例如下: 

    Java代码  收藏代码
    1. <servlet>    
    2.   <servlet-name>tiles</servlet-name>    
    3.   <servlet-class>    
    4.     org.apache.tiles.servlet.TilesServlet    
    5.   </servlet-class>    
    6.   <init-param>    
    7.     <param-name>definitions-config</param-name>    
    8.     <param-value>    
    9.       /WEB-INF/tiles-defs.xml    
    10.     </param-value>    
    11.   </init-param>    
    12.   <load-on-startup>2</load-on-startup>    
    13. </servlet>    



    在传统Servlet中利用TilesServlet加载的Tiles定义(definition)可以使用TilesContainer的render方法实现转向到Tiles定义。代码如下: 


    Java代码  收藏代码
    1. TilesContainer container = TilesAccess.getContainer(    
    2.     request.getSession().getServletContext());    
    3. container.render("main", request, response);    
    4.     



    更多内容 
    关于Tiles的更多内容,如 

    List Attributes 
    请参考Tiles官方网站:http://tiles.apache.org 



    Tiles 知识要点 
    Tiles中的三大元素:定义、模板、属性 
    template = URI{1} 
    definition = template{1} + attribute* 
    attribute = STRING{1} | definition{1} | template {1} 



    Tiles核心配置文件 

    Java代码  收藏代码
    1. <!DOCTYPE tiles-definitions PUBLIC   
    2.   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"   
    3.   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">   
    4.   
    5.    


    引入Tiles标签库 
    Java代码  收藏代码
    1. <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>    
    2.   
    3.    


    在Web应用中使用直接Tiles架构 
    在web.xml中关于Tiles架构的定义 
    Java代码  收藏代码
    1. <servlet>    
    2.   <servlet-name>tiles</servlet-name>    
    3.   <servlet-class>    
    4.     org.apache.tiles.servlet.TilesServlet    
    5.   </servlet-class>    
    6.   <init-param>    
    7.     <param-name>definitions-config</param-name>    
    8.     <param-value>    
    9.       /WEB-INF/tiles-defs.xml    
    10.     </param-value>    
    11.   </init-param>    
    12.   <load-on-startup>2</load-on-startup>    
    13. </servlet>    




    资源 
    http://tiles.apache.org/ 

    JAR包 
    Tiles开发包 
    tiles-core-2.0.3.jar 
    tiles-api-2.0.3.jar 
    tiles-jsp-2.0.3.jar 

    Tiles所依赖的开发包 
    commons-beanutils-1.7.0.jar 
    commons-digester-1.8.jar 
    commons-logging-api-1.1.jar
  • 相关阅读:
    (转)Pythonfunctools详解
    (转)这有 73 个例子,彻底掌握 fstring 用法!
    (转)你不一定全知道的四种Python装饰器实现详解
    (转)学习Python,怎能不懂点PEP呢?
    (转)5个案例详解装饰器 | 手把手教你入门Python之四十六
    (转)Python 对象协议
    (转)functools — 函数操作工具箱
    (转)Python 魔术方法指南
    Python 对象协议
    (转)Python timeit模块的使用实践
  • 原文地址:https://www.cnblogs.com/name-hanlin/p/5541653.html
Copyright © 2020-2023  润新知