• Apache Tiles教程


    Apache Tiles是表现层的布局引擎。
    在通常我们用jsp页面做布局时,通常会用<jsp:include page=”“/>或者<%@include file=”“%>将多个页面组合在一起。但页面一多,而且需要每个页面都要使用上述的标签包含其他通用页面。这样不方便维护,而apache tile解决了这个问题。

    下面介绍一个使用Apache Tiles的示例

    Maven导入包

    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-extras</artifactId>
        <version>3.0.7</version>
    </dependency>
    1. 配置TilesConfigurer
      TilesConfigurer用于定位和加载tile并协同生成tiles视图
      java config配置方法
    @Bean
    public TilesConfigurer tilesConfigurer(){
         public TilesConfigurer tilesConfigurer(){
            TilesConfigurer tilesConfigurer=new TilesConfigurer();
            tilesConfigurer.setDefinitions("/WEB-INF/layout/tiles.xml");//接收list数组,每一项表示一个Tile定义的xml文件
            return tilesConfigurer;
        }
    }

    2.配置TilesViewResolver
    TilesViewResolver用于将逻辑视图名转换为真正的tiles视图

      @Bean
        public TilesViewResolver tilesViewResolver(){
            return new TilesViewResolver();
        }

    3.写一个Tile定义文件,位于WEB-INF/layout文件夹下。
    每一个<definition>元素都定义了一个Tile,它最终引用的是一个JSP模板。在名为base的Tile中,模板引用的是“/WEB-INF/layout/page.jsp”。某个模板可能还会引用其他的jsp模板,使这些模板嵌入到主模板中。对于base Tile,他引用的是一个头部jsp模板和尾部jsp模板。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE tiles-definitions PUBLIC
            "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
            "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
    <tiles-definitions>
        <definition name="base" template="/WEB-INF/layout/page.jsp">
            <put-attribute name="header" value="/WEB-INF/layout/header.jsp"></put-attribute>
            <put-attribute name="footer" value="/WEB-INF/layout/footer.jsp"></put-attribute>
        </definition>
    
        <definition name="home" extends="base">
            <put-attribute name="body" value="/WEB-INF/view/home.jsp"></put-attribute>
        </definition>
    
        <definition name="registerForm" extends="base">
            <put-attribute name="body" value="/WEB-INF/view/registerForm.jsp"></put-attribute>
        </definition>
    
        <definition name="profile" extends="base">
            <put-attribute name="body" value="/WEB-INF/view/profile.jsp"></put-attribute>
        </definition>
    
        <definition name="spittles" extends="base">
            <put-attribute name="body" value="/WEB-INF/view/spittles.jsp"></put-attribute>
        </definition>
    
        <definition name="spittle" extends="base">
            <put-attribute name="body" value="/WEB-INF/view/spittle.jsp"></put-attribute>
        </definition>
    </tiles-definitions>

    主布局模板:引用其他模板来创建试图 (page.jsp)

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2017/5/27
      Time: 1:56
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
    <html>
    <head>
        <title>Spittr</title>
    </head>
    <body>
        <div id="header">
            <tiles:insertAttribute name="header"></tiles:insertAttribute>
        </div>
        <div id="body">
            <tiles:insertAttribute name="body"></tiles:insertAttribute>
        </div>
        <div id="footer">
            <tiles:insertAttribute name="footer"></tiles:insertAttribute>
        </div>
    </body>
    </html>
    

    再看之前的tiles.xml配置,发现base中没有为设置body属性,那上面的<tiles:insertAttribute name=”body”></tiles:insertAttribute>的body属性从何而来。
    其实你会发现其他的tile元素它继承了base,并在其中设置了body属性,意味这body对应的jsp模板是动态变化的,实现了布局的效果。

    下面启动服务器,访问:http://localhost:9090/page/spitter
    这里写图片描述

    访问:http://localhost:9090/page/home
    这里写图片描述

  • 相关阅读:
    HTML框架
    HTML链接
    kzalloc 函数详解(转载)
    LCD接口(转载)
    S3C2440上RTC时钟驱动开发实例讲解(转载)
    PHP 真值与空值
    http chunked 理解
    c# 基础
    美式音标注意事项
    groovy 闭包
  • 原文地址:https://www.cnblogs.com/chenny3/p/10226153.html
Copyright © 2020-2023  润新知