Spring MVC之使用Apache Tiles
2017-01-18 09:00
225 查看
谈谈IT 2017-01-15 11:48
我计划完成 50 到 100 篇有关 Spring 的文章,这是第十八篇。如果您对Spring和编程感兴趣,欢迎订阅我的头条号,也欢迎关注我的个人独立IT博客:谈谈IT,网址就是tantanit.com哦。
有时候,一些页面会共用同样的布局,比如相同的头部菜单或者底部内容,可以将重复的内容抽取出来,写在单独的文件里,而每个页面在适当的地方引入这些文件。但是即使这样,也还是显得繁琐,而且一旦布局变化(比如头部的菜单移动到侧边栏),每个文件也都要改。而使用Apache Tiles,可以将方便地重复使用布局模板,由于布局间可以继承,对布局变化的处理也更加方便。
配置TilesConfigurer和TilesViewResolver
上述代码中,配置TilesConfigurer,指定tiles定义文件,并指定了多个tiles定义文件。然后,定义视图解析器为TilesViewResolver。
下面让我们看一下/WEB-INF/layout/tiles.xml的内容。
tiles定义
第一个definition中,定义了名称为base的模板,模板内容为page.jsp,并且指定了两个属性header和footer,内容分别为header.jsp,footer.jsp,这两个属性可以在page.jsp中使用。
第二个definition,定义了名称为home的页面,这个页面继承了base模板,同时,指定名称为body的属性值为home.jsp,该属性可以在page.jsp中使用。可以这样理解,名称为home的页面的布局已经在page.jsp中定义了,个性化的部分,只有body属性的内容。
第三个definition,定义了名称为about的页面,这个页面也是继承base模板,同时,指定名称为body的属性值为about.jsp。
这样说起来有点抽象,但看完page.jsp的内容就会比较清楚了。
page.jsp
page.jsp页面中,作为模板页面。定义了三个div,header,content和footer,其中,header的内容由属性header指定,footer的内容由属性footer指定,而这两个属性在名称为base的模板定义中已经分别指定为header.jsp和footer.jsp,属于每个页面共同的布局。而id为content的内容由属性body指定,这个属性由具体的页面决定,是每个页面除布局外的具体内容。
在页面渲染时,比如要渲染home.jsp,除了home.jsp外,还会根据模板定义,加上相应的布局,渲染完整的页面。
下面贴出布局和具体页面内容,并展示最终效果。
header.jsp:
header.jsp
footer.jsp:
footer.jsp
home.jsp:
home.jsp
about.jsp:
about.jsp
首页渲染效果如下:
关于页面渲染效果如下:
样式略丑,多包涵。
我已经将代码放在 https://github.com/4zd/spring-tiles 上,欢迎下载。
如果您喜欢这篇文章,可以收藏和分享给更多朋友哦,在此拜谢orz!收藏和分享后,在PC上看IT文章,观感更好。您可以通过toutiao.com访问今日头条,也可以直接访问我的独立博客tantanit.com。这篇文章的地址是http://tantanit.com/spring-apache-tiles
我计划完成 50 到 100 篇有关 Spring 的文章,这是第十八篇。如果您对Spring和编程感兴趣,欢迎订阅我的头条号,也欢迎关注我的个人独立IT博客:谈谈IT,网址就是tantanit.com哦。
有时候,一些页面会共用同样的布局,比如相同的头部菜单或者底部内容,可以将重复的内容抽取出来,写在单独的文件里,而每个页面在适当的地方引入这些文件。但是即使这样,也还是显得繁琐,而且一旦布局变化(比如头部的菜单移动到侧边栏),每个文件也都要改。而使用Apache Tiles,可以将方便地重复使用布局模板,由于布局间可以继承,对布局变化的处理也更加方便。
定义Tiles视图解析器
下面代码是继承自WebMvcConfigurerAdapter的WebConfig类,在其中定义了TilesConfigurer和TilesViewResolver的bean。配置TilesConfigurer和TilesViewResolver
上述代码中,配置TilesConfigurer,指定tiles定义文件,并指定了多个tiles定义文件。然后,定义视图解析器为TilesViewResolver。
下面让我们看一下/WEB-INF/layout/tiles.xml的内容。
tiles定义
tiles定义
第一个definition中,定义了名称为base的模板,模板内容为page.jsp,并且指定了两个属性header和footer,内容分别为header.jsp,footer.jsp,这两个属性可以在page.jsp中使用。
第二个definition,定义了名称为home的页面,这个页面继承了base模板,同时,指定名称为body的属性值为home.jsp,该属性可以在page.jsp中使用。可以这样理解,名称为home的页面的布局已经在page.jsp中定义了,个性化的部分,只有body属性的内容。
第三个definition,定义了名称为about的页面,这个页面也是继承base模板,同时,指定名称为body的属性值为about.jsp。
这样说起来有点抽象,但看完page.jsp的内容就会比较清楚了。
渲染页面
page.jsp
page.jsp页面中,作为模板页面。定义了三个div,header,content和footer,其中,header的内容由属性header指定,footer的内容由属性footer指定,而这两个属性在名称为base的模板定义中已经分别指定为header.jsp和footer.jsp,属于每个页面共同的布局。而id为content的内容由属性body指定,这个属性由具体的页面决定,是每个页面除布局外的具体内容。
在页面渲染时,比如要渲染home.jsp,除了home.jsp外,还会根据模板定义,加上相应的布局,渲染完整的页面。
下面贴出布局和具体页面内容,并展示最终效果。
header.jsp:
header.jsp
footer.jsp:
footer.jsp
home.jsp:
home.jsp
about.jsp:
about.jsp
首页渲染效果如下:
关于页面渲染效果如下:
样式略丑,多包涵。
我已经将代码放在 https://github.com/4zd/spring-tiles 上,欢迎下载。
如果您喜欢这篇文章,可以收藏和分享给更多朋友哦,在此拜谢orz!收藏和分享后,在PC上看IT文章,观感更好。您可以通过toutiao.com访问今日头条,也可以直接访问我的独立博客tantanit.com。这篇文章的地址是http://tantanit.com/spring-apache-tiles
相关文章推荐
- 使用spring MVC框架进行文件上传
- 使用spring MVC框架进行文件上传
- 使用Spring MVC生成Excel文档
- 使用Spring MVC表单标签一
- Spring mvc 实例--使用velocity视图,解决中文乱码问题
- 使用Spring MVC表单标签二
- Spring MVC可使用的AbstractJpegView
- 使用 Spring 2.5 基于注解驱动的 Spring MVC
- 转:关于我使用spring mvc框架做文件上传时遇到的问题
- 11月30在spring mvc中使用Validator框架和文件上传
- 使用Spring MVC 的表单控制器SimpleFormController
- Spring MVC的标签在Velocity中的使用
- Spring MVC集成Struts Tiles使用方法
- Spring MVC 复杂表单分部提交--使用AbstractWizardFormController解决方案
- 11月30在spring mvc中使用Validator框架和文件上传
- 11月30在spring mvc中使用Validator框架和文件上传
- Spring MVC 中使用多个url控制器
- 关于我使用spring mvc框架做文件上传时遇到的问题
- 使用 Spring 2.5 基于注解驱动的 Spring MVC
- 使用 Spring 2.5 基于注解驱动的 Spring MVC