tiles框架使用简单总结

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

大家好,我是讯享网,很高兴认识大家。

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排除吧;

 

 

小讯
上一篇 2025-01-16 11:36
下一篇 2025-02-15 09:26

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/59700.html