tiles框架使用简单总结

1.Tiles框架简介:

最早的Tiles是组装在Struts1.1里面的,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。现在Tiles已经作为一个Apache独立的开源项目维护着。

所有的网站都有一些共通的东西:所有的网站都是有网页构成,而且它们彼此分享着共通的结构。这些页面有着共通的布局,但是页面和页面之间又有不同的地方,而且不同的地方通常都在同样的位置。

如下图所示

 

 

通常的来说一个页面大概可以划分为如下几块:

head页面头部:存放一个应用的公共信息:logo等,如果是网站可能是最上面的一块。

menu页面菜单:放置一个应用中需要使用的菜单,或者在每一个页面都使用的连接。

footer页面尾部:如版权信息等。

body页面主题内容:每个页面相对独立的内容。

我们的所有页面,按上面的划分,每一个页面我们只要写body里面的内容,其他的就可以共享重用。既然大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body,其余相同的部分直接重用即可。

 

当然,接触Java Web开发的人都知道,JSP中可以通过include标签动态插入一个JSP页面。在了解这个功能后可能会兴奋不已,因为这样可以实现多个JSP页面共用一个JSP的内容,但是在海量的jsp页面数量下,jsp页面的每个页面都需要声明,若要更改的话,更改的速度有时候真的赶不上老板页面变化的速度,而使用tiles这一框架,完全可以在老板话说完的时候就完成改动。

 

2.在spring中使用Tiles框架

jar包引入

在引入jar包对手,我用了exclusion来排除tilesjar包和slf4j的冲突,如果你的不报错,请忽视这个,哈哈~

<dependency>
  <groupId>org.apache.tiles</groupId>
  <artifactId>tiles-extras</artifactId>
  <version>3.0.7</version>
  <!--<exclusions>-->
    <!--<exclusion>-->
      <!--<artifactId>slf4j-api</artifactId>-->
      <!--<groupId>org.slf4j</groupId>-->
    <!--</exclusion>-->
  <!--</exclusions>-->
</dependency>

核心的tiles的配置文件,tiles-defs.xml定义了每一个页面的组成元素和形式。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
  "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
  "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
    <definition name="base-configuration" template="/WEB-INF/tiles/template.jsp">
        <put-attribute name="title" value=""/>
        <put-attribute name="body" value=""/>
        <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
        <put-attribute name="footer" value="/WEB-INF/tiles/footer.jsp"/>
        <!--<put-attribute name="menu"  value="/WEB-INF/tiles/menu.jsp"/>-->
    </definition>
    <!--home页-->
    <definition name="homePage" extends="base-configuration">
        <put-attribute name="title" value="/WEB-INF/jsp/titleHome.jsp"/>
        <put-attribute name="body" value="/WEB-INF/jsp/bodyHome.jsp"/>
     </definition>
 </tiles-definitions>

说明:definition的标签,第一个定义了模板文件的格式和名字,别的页面的引用,是基于这个template.jsp

文件的;

声明的方式为 template="/WEB-INF/tiles/template.jsp(文件路径)",重用的元件jsp文件,如header,footer等都在这块声明,在别的页面引用的时候,如果没有声明覆盖,会自动使用模板的格式;

put-attribute标签,即为放入页面的jsp页面,值为路径;

第二个<definition>下的定义,是项目的页面定义名称和模板文件;extends="base-configuration" 即是声明该页面跨基于模板页面,如果有重写,就声明来进行覆盖;

覆盖方式为:在put-attribute标签中,声明同一名称,但是路劲为该项目的文件;

模板template.jsp页面,需要进行tiles的各组成部分的声明,代码如下:

<head>
    <title>
    <tiles:insertAttribute name="title"/>
    </title>
</head>

<header>
    <tiles:insertAttribute name="header" />
</header>

<main>
    <tiles:insertAttribute name="body" />
</main>

<footer>
    <tiles:insertAttribute name="footer"/>
</footer>

<tiles:insertAttribute>标签,即为声明这个部分需要去加载对应的jsp文件;

 

Tiles的xml文件加载和视图解析配置:

<bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
<!--<property name="prefix" value="/WEB-INF/jsp/" />-->
<!--<property name="suffix" value=".jsp" />-->
<!--<property name="order" value="1"/>-->
    <property name="order" value="1"/>
</bean>
<!--tiles的路径配置-->
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions" value="/WEB-INF/tiles.xml"/>
</bean>

说明:order属性,在程序中有多个视图处理器时,声明视图处理器的优先级,值越小,优先级越高;

使用tiles框架后,视图的加载顺序说明:

客户端在地址栏输入方法url后——到controller层寻找对应方法——进入方法中,返回对应视图名——到优先最高的tiles的视图解析器中寻找返回的homepage——在layout.xml中找到了继承自layout的homepage——将homepage对应的body放进主视图template.jsp中——处理对应的jsp,将其返回到浏览器,就是我们看到的页面。

如果日后有需要更改的页面,只需要把复用的模块改动一下,然后一下总体布局文件和相关配置就可以啦。大大减少了工作量。

Tiles框架温馨提示

当然,程序运行最怕的就是jar包冲突,而且tiles的jar包跟slf4j的冲突真的很明显;这个自己使用exclusion排除吧;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值