【SSM】tiles框架布局

代码资源网盘地址:https://pan.baidu.com/s/131J3pLag73A0mmqq9dKjsg

提取码:jiv9

1.配置文件添加tiles相关配置

(1)pom.xml

    <!-- Tiles3 -->
    <!-- All Features -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-extras</artifactId>
        <version>3.0.5</version>
    </dependency>

(2)springmvc.xml

一般情况配置如下(使用tiles布局,将其注释掉):

        <!-- 配置视图解析器,该类在spring-webmvc.jar包中 
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="prefix" value="/WEB-INF/jsp/"/>
          <property name="suffix" value=".jsp"/>
        </bean>  -->

tiles布局配置如下:

        <!-- tiles布局 -->
        <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" p:order="1"/>
        <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <property name="definitions">
            <list>
                <!-- Tiles基础部分 -->
                <value>/WEB-INF/config/tiles.xml</value>
                <!-- Tiles高级特性 -->
                <value>/WEB-INF/config/tiles-advanced-features.xml</value>
            </list>
        </property>
        <!-- springMVC整合情形下开启各种高级特性的方便途径,无需使用高级特性时删除此配置即可(在web.xml中配置监听器CompleteAutoloadTilesListener可以实现相同效果,不过有些小差别,比如对通配符前缀的处理方式) -->
        <property name="completeAutoload" value="true" />
        </bean>
        <!-- 多视图解析器 -->
        <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2"> 
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
            <property name="contentType" value="text/html"/> 
            <property name="prefix" value="/WEB-INF/jsp/"/> 
            <property name="suffix" value=".jsp"/> 
        </bean>

2.tiles.xml配置内容:

<?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>
 
 <!-- 基本布局页面 -->
 <!--
  如果还有尚未填充的Attribute,这被称作抽象定义(abstract definition),它可以被其他Definition继承以实现布局复用,或者也可以在运行时填充这些Attribute,是否填充是可选的。
  本例中layout.jsp页面中尚未填充的属性为<tiles:insertAttribute name="content" />
  -->
 <definition name="base.definition" template="/WEB-INF/jsp/layout/layout.jsp">
  <put-attribute name="nav" value="/WEB-INF/jsp/layout/nav.jsp" />
  <put-attribute name="title" value="All of the stars"/>
 </definition>
 
 <!-- =========================================== 定义的继承 ========================================================================== -->
 <!--
  Definition extension: a definition can inherit from another definition, to reuse an already made (abstract or not) definition
  extends:类似Java的继承,抽象定义、继承、覆盖。(覆盖有两种形式:覆盖Template和覆盖Attribute)
  我们用了通配符简化定义,为什么在属性name前附加“WILDCARD:”前缀?因为例子启用了Tiles的高级特性以支持更复杂的通配符情形,如果不需要使用高级特性(详见springMVC配置文件completeAutoload)则默认情况下无需添加此前缀。详见http://tiles.apache.org/framework/tutorial/advanced/wildcard.html
  -->
 <definition name="WILDCARD:tiles/*" extends="base.definition">
  <!-- {1}:通配符方式简化定义 -->
  <put-attribute name="content" value="/WEB-INF/jsp/{1}.jsp"/>
 </definition>
 
 <!-- 覆盖Template -->
 <definition name="WILDCARD:tiles2/*" extends="base.definition" template="/WEB-INF/jsp/layout/layout2.jsp">
  <!-- 覆盖Attribute -->
  <put-attribute name="nav" value="/WEB-INF/jsp/layout/nav2.jsp" />
  <put-attribute name="content" value="/WEB-INF/jsp/{1}.jsp"/>
 </definition>
 
 <!-- 覆盖Template -->
 <!-- 以下内容是在网盘下载内容基础上新增,目的是为了可以访问某个文件夹下的jsp -->
 <definition name="WILDCARD:tiles2/*/*" extends="base.definition" template="/WEB-INF/jsp/layout/layout2.jsp">
  <!-- 覆盖Attribute -->
  <put-attribute name="nav" value="/WEB-INF/jsp/layout/nav2.jsp" />
  <put-attribute name="content" value="/WEB-INF/jsp/{1}/{2}.jsp"/>
 </definition>
 <!-- ============================================================================================================================= -->
 
</tiles-definitions>

3.tiles-advanced-features.xml配置文件:

<?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>
    
    <!-- 
        Tiles Runtime Composition 运行时构建视图
        这里我们启用了Tiles高级特性(springMVC配置文件completeAutoload)以支持EL表达式用于构建definition。Tiles还支持“MVEL:”和“OGNL:”,相见http://tiles.apache.org/framework/tutorial/advanced/el-support.html
    -->
    <definition name="forRuntimeEl" templateExpression="${runtimeTemplate}"> 
        <put-attribute name="nav" value="/WEB-INF/jsp/layout/nav2.jsp" />
        <put-attribute name="content" expression="${runtimeAttribute}" />
    </definition>
</tiles-definitions>
tiles-advanced-features

4.layout.jsp配置文件:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@tagliburi="/WEB-INF/tlds/c.tld"prefix="c"%><%@tagliburi="/WEB-INF/tlds/tiles.tld"prefix="tiles"%><c:setvar="ctx"value="${pageContext.request.contextPath}"/><c:setvar="ctxStatic"value="${pageContext.request.contextPath}/static"/><!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1"><%--ignore:默认false代表此属性不可忽略必须填充,当attribute未填充时会抛NoSuchAttributeException;设为true则表示可此属性在未填充时不做任何操作--%><title><tiles:insertAttributename="title"ignore="true"/></title><linkhref="${ctxStatic}/css/bootstrap.min.css"rel="stylesheet"><linkhref="${ctxStatic}/css/bootstrap-combined.min.css"rel="stylesheet"media="screen"><!--[ifltIE9]><scriptsrc="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><scriptsrc="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]--></head><body><divclass="container-fluid"><divclass="row-fluid"><divclass="span12"><tiles:insertAttributename="nav"/><divstyle="min-height:400px;"><tiles:insertAttributename="content"/></div></div></div></div><scriptsrc="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><scriptsrc="${ctxStatic}/js/bootstrap.min.js"></script></body></html>
layout

5.layout2.jsp配置文件:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@tagliburi="/WEB-INF/tlds/c.tld"prefix="c"%><%@tagliburi="/WEB-INF/tlds/tiles.tld"prefix="tiles"%><c:setvar="ctx"value="${pageContext.request.contextPath}"/><c:setvar="ctxStatic"value="${pageContext.request.contextPath}/static"/><!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="utf-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1"><%--上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后!--%><title><tiles:insertAttributename="title"ignore="true"/></title><linkhref="${ctxStatic}/css/bootstrap.min.css"rel="stylesheet"><linkhref="${ctxStatic}/css/bootstrap-combined.min.css"rel="stylesheet"media="screen"><linkhref="${ctxStatic}/css/layout2.css"rel="stylesheet"><!--[ifltIE9]><scriptsrc="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><scriptsrc="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]--></head><body><%--From:http://ruyo-net-demo.qiniudn.com/Bootstrap_left_menu.html--%><divclass="navbarnavbar-duominavbar-static-top"role="navigation"><divclass="container-fluid"><divclass="navbar-header"><aclass="navbar-brand"href="javascript:void(0)"id="logo">Run!!!</a></div></div></div><divclass="container-fluid"><divclass="row"><divclass="col-md-2"><tiles:insertAttributename="nav"/></div><divclass="col-md-10"style="min-height:400px;"><tiles:insertAttributename="content"/></div></div></div><scriptsrc="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><scriptsrc="${ctxStatic}/js/bootstrap.min.js"></script></body></html>
layout2

6.nav.jsp配置文件:

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@tagliburi="/WEB-INF/tlds/c.tld"prefix="c"%><c:setvar="ctx"value="${pageContext.request.contextPath}"/><divclass="navbar"><divclass="navbar-inner"><divclass="container-fluid"><aclass="btnbtn-navbar"data-target=".navbar-responsive-collapse"data-toggle="collapse"></a><aclass="brand"href="javascript:void(0)">Run!!!</a><divclass="nav-collapsenavbar-responsive-collapse"><ulclass="nav"><li${'home'eqactiveNav?'class="active"':''}><ahref="${ctx}/better/p/home">冰与火之歌</a></li><li${'music'eqactiveNav?'class="active"':''}><ahref="${ctx}/better/p/music">音乐小镇</a></li><li${'carousel'eqactiveNav?'class="active"':''}><ahref="${ctx}/better/p/carousel">轮播</a></li><liclass="dropdown${(('progressbar'eqactiveNav)||('rt'eqactiveNav))?'active':''}"><aclass="dropdown-toggle"data-toggle="dropdown"href="#">更多</a><ulclass="dropdown-menu"><li><ahref="${ctx}/better/p/progressbar">看看</a></li><liclass="nav-header">-----------</li><li><ahref="${ctx}/better/rt">TilesRuntime</a></li><liclass="nav-header">-----------</li><li><ahref="${ctx}/better/no-tiles">无关Tiles</a></li></ul></li></ul><ulclass="navpull-right"><li${'dont-starve-together'eqactiveNav?'class="active"':''}><ahref="${ctx}/better/p/dont-starve-together">Don'tStarveTogether</a></li><li><ahref="${ctx}/better/p2/home">左侧菜单</a></li></ul></div></div></div></div>
nav

7.nav2.jsp配置文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/tlds/c.tld" prefix="c"%>

<c:set var="ctx" value="${pageContext.request.contextPath}" />

<ul id="main-nav" class="nav nav-tabs nav-stacked">
    <li class="active">
        <a href="${ctx}/better/p/home"> <i class="glyphicon glyphicon-th-large"></i> 默认主题</a>
    </li>
    <li>
        <a href="#systemSetting" class="nav-header collapsed" data-toggle="collapse">
            <i class="glyphicon glyphicon-cog"></i> 都是好东西! <span class="pull-right glyphicon glyphicon-chevron-down"></span>
        </a>
        <ul id="systemSetting" class="nav nav-list collapse secondmenu" style="height: 0px;">
            <li><a href="${ctx}/better/p2/home"><i class="glyphicon glyphicon-user"></i> 冰与火之歌</a></li>
            <li><a href="${ctx}/better/p2/music"><i class="glyphicon glyphicon-music"></i> 音乐小镇</a></li>
            <li><a href="${ctx}/better/p2/carousel"><i class="glyphicon glyphicon-asterisk"></i> 轮播</a></li>
            <li><a href="${ctx}/better/p2/progressbar"><i class="glyphicon glyphicon-edit"></i> 看看</a></li>
        </ul>
    </li>
    <li><a href="${ctx}/better/p2/home"> <i class="glyphicon glyphicon-credit-card"></i> 冰与火之歌</a></li>
    <li>
        <a href="${ctx}/better/p2/music">
            <i class="glyphicon glyphicon-music"></i> 音乐小镇 <span class="label label-warning pull-right">6</span>
        </a>
    </li>
    <li><a href="${ctx}/better/p2/carousel"> <i class="glyphicon glyphicon-calendar"></i> 轮播</a></li>
    <li><a href="${ctx}/better/p2/progressbar"> <i class="glyphicon glyphicon-fire"></i> 看看</a></li>
</ul>
View Code

 

posted @ 2021-03-26 16:03  少年阿川  阅读(149)  评论(0)    收藏  举报