`
mengyang
  • 浏览: 263632 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

tiles使用总结

阅读更多
  最近学习了下Tiles,准备应用到实际项目中,由于还使用了Spring MVC,所以需要把Tiles集成到Spring MVC中。
  Tiles是的版本是2.2.2,Spring版本是3.1.0M2.
  步骤挺简单
[list]
  • 创建布局文件
  • <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
    
    <HTML>
    	<HEAD>
    		<title><tiles:getAsString name="title" /></title>
    	</HEAD>
    
    	<body>
    		<table border="0" width="100%" cellspacing="5">
    			<tr>
    				<td colspan="2"><tiles:insertAttribute name="header" /></td>
    			</tr>
    			<tr>
    				<td width="140" valign="top"><tiles:insertAttribute name='menu' /></td>
    				<td valign="top" align="left"><tiles:insertAttribute name='body' /></td>
    			</tr>
    			<tr>
    				<td colspan="2"><hr></td>
    			</tr>
    			<tr>
    				<td colspan="2"><tiles:insertAttribute name="footer" /></td>
    			</tr>
    		</table>
    	</body>
    </html>
    

    布局文件用来规范了整个页面的布局,包括页面上的哪一块应该放入哪个内容,但是具体的内容没有在这个页面上体现出来,所以还需要一个用来指定每块内容的定义文件。
  • 创建定义文件
  • <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!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=".mainLayout" template="/WEB-INF/views/test/common/layout.jsp">
    	  <put-attribute name="title"  value="Tiles Library Documentation" />
    	  <put-attribute name="header" value="/WEB-INF/views/test/common/header.jsp" />
    	  <put-attribute name="menu"   value="/WEB-INF/views/test/common/menu.jsp" />
    	  <put-attribute name="footer" value="/WEB-INF/views/test/common/footer.jsp" />
      </definition>
    
      <definition name=".test.*.*" extends=".mainLayout" preparer="com.fsti.test.controller.TestViewPrepare">
      	<put-attribute name="body" value="/WEB-INF/views/test/{1}/{2}.jsp" />
      </definition>
    
    </tiles-definitions>
    

    定义文件指定了布局文件中每块应该由什么具体内容来填充。注意我们这里使用了通配。
  • 在Spring中配置TilesConfigurer和Tiles的视图解析器
  • <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    	<beans:property name="definitions">
    		<beans:list>
    			<beans:value>/WEB-INF/tiles-defs.xml</beans:value>
    		</beans:list>
    	</beans:property>
    </beans:bean>
    
    <beans:bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    	<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
    </beans:bean>
    
    <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<beans:property name="prefix" value="/WEB-INF/views/" />
    	<beans:property name="suffix" value=".jsp" />
    </beans:bean>
    

    注意这里还有个JSP用的视图解析器,用来处理不需要被Tiles渲染的视图。
  • Controller中返回逻辑视图名
  • @RequestMapping("/view")
    public String view(){
    	return ".test.product.product_view";
    }
    

    注意到现在控制器返回的逻辑视图名对应的是一个tiles定义文件中的定义名,这样tiles的视图解析器就会为你正确的渲染视图。
    [/list]
       可以看到使用Tiles还是很简单的,自从Tiles2.1后就开始支持通配,通过约定命名规范,就可以节省许多定义文件的配置。  
       以前也使用过Sitemesh,现在再大概比较下它们:
       1. sitemesh最令人诟病的一点可能就是它的性能问题,由于使用了装饰器模式,要去解析html代码,会产生好多垃圾对象,所以会频繁的引起GC,CPU的负担会加大。而Tiles基本上没有这样的问题。Sitemesh的测试见:http://www.iteye.com/topic/715100
       2. 有人说tiles的配置比较繁琐,通过上面的例子我们可以看见自从Tiles引入通配后,配置简单了很多。使用Sitemesh也至少需要两个文件,一个布局文件,一个装饰器映射文件,在映射中也需要配置匹配的URL路径,实际上比Tiles简单不了多少。
       3. 在JSP页面的编写上,使用Sitemesh非常舒服,完全是无倾入的,开发人员根本不知道是否用了sitemesh。而使用Tiles的开发人员要注意由于<HTML>这样的标签都定义在了布局jsp中,所以每个tile页面是不能包含它们的。
       4. 动态内容的编辑,比如每个页面的title,sitemesh提供了<decorator:title />用来很方便的为你插入title内容。而sitemesh则必须单独定义在定义文件中,或者使用通配从controller返回的视图名中解析出来,感觉相当不好。
      5. Tiles的功能更强大一些,比如可以直接在servlet中渲染视图,在运行时改变定义之类的,而且有更好的个性化扩展性,相对来说siteme就没那么多功能了(虽说我觉得那些功能实际上都没什么用)。不过也可以认为Tiles的学习难度会比sitemesh高一些。
       总的来说,Tiles和Sitemesh都是非常好的布局框架,具体选择哪一个应该根据项目来定。如果对性能要求比较高的话,还是选择Tiles稳妥些,或者可以等到Sitemesh3成熟以后。
    4
    0
    分享到:
    评论
    1 楼 超级无敌唐僧 2014-04-10  
    能给个源码不???????????????

    相关推荐

      apache_tiles2.2---文档读后总结

      apache_tiles2.2---文档读后总结。

      tiles 简明教程

      Tiles 作为Struts 的重要组成部分,正受到越来越多人的青睐。这几页pdf对tiles框架作了精辟的总结,内容由浅入深,主要是结合了实例,让人觉得非常简单!你还不知道什么是tiles吗,还不快来下!?

      Tiles的使用 - 遗补和总结-.docx

      。。。

      Tiles的使用 - 遗补和总结-.pdf

      。。。

      Java语言基础下载

      配置Tiles框架 660 内容总结 661 独立实践 661 第三十三章:Struts标记库 662 学习目标 662 Struts标记库taglib介绍 663 Bean标记 663 逻辑标记 665 转发和重定向标记 668 HTML标记 669 显示错误信息的标记 673 其他...

      WPF全景控件Panorama源码

      Panorama的作用是非常简单,可以很容易地总结以下几点: 1.Create a Metro style control. I say Style, as it may not be 100% in line with what the Win8 Metro tile interface does, or how it functions, but ...

      Spring中文帮助文档

      12.5.2. 使用 SqlMapClientTemplate 和 SqlMapClientDaoSupport 12.5.3. 基于原生的iBATIS API的DAO实现 12.6. JPA 12.6.1. 在Spring环境中建立JPA 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的...

      Spring API

      1.1.1. 使用场景 2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在...

      使用消息推送机制

      课程 3: 使用 sub-tiles 和 deep toast notifications .......................................................... 61 任务 1 – 创建独立的 MSPN注册页面.........................................................

      spring chm文档

      Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack ...19.2. 使用Spring JMS ...

      Spring-Reference_zh_CN(Spring中文参考手册)

      1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...

      Spring 2.0 开发参考手册

      1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 ...

      JAVA项目开发全程实录(含电子书和所有源代码)

      7.11.2 为Tiles指定错误页面 347 7.12 使用MyEclipse生成Hibernate 实体类和映射文件 347 7.13 本章总结 351 第8章 企业门户网站(JSP+JavaBean +SQL Server 2000实现) 352 教学视频:1小时9分 8.1 开发背景 353 ...

      电子商城系统设计实习报告.doc

      16 7.1.1 实体联系图 16 7.2 逻辑结构 18 7.2.1 数据表结构详细设计 18 7.2.2 数据库表之间的关系设计 19 8 程序效果展示 20 8.1 前台功能模块 20 8.2 后台功能模块 22 9 实习总结体会 27 实习内容简述 1 实习期间...

      Spring面试题

      在对由三部分组成的 Spring 系列 的第 1 部分进行总结时,我使用了一个示例,演示了如何通过 Spring IOC 容器注入应用程序的依赖关系(而不是将它们构建进来)。 我用开启在线信用帐户的用例作为起点。对于该实现,...

      Struts原理、开发及项目实施

      12 &lt;br/&gt;1、 摘要 2、 关键词 3、 Framework 4、 Struts的起源 5、 Struts工作原理 6、 Struts安装 7、 一个实例 8、 Struts优缺点 9、 Struts项目实施经验 10、 总结 ...

      osgEarth的121个案例详解

      osgEarth 的 121 个案例详解 osgEarth 的 121 个案例详解 ...........................................................................................................1 1. aeqd.earth...........................

    Global site tag (gtag.js) - Google Analytics