【修真院JAVA小课堂】为什么使用Tiles

大家好,我是IT修真院西安分院第2期学员,一枚正直善良的java程序员。
今天给大家分享一下,修真院官网java任务四中可能会使用到的知识点:
为什么要使用Tiles框架

1.背景介绍

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

如果您发现自己在每个页面上都要编写三行相同的 JSP 代码,或者你想容易地定义复杂的模版布局,那么相信学习Tiles框架会对你有帮助

2.知识剖析

tiles是什么

复合视图模式

所有的网站都有一些共同点:它们由共享类似结构的页面组成。页面共享相同的布局,而每个页面由不同的独立部分组成,但始终放置在整个站点的相同位置。

Tiles 是复合视图模式(Composite View pattern)的一个实现。Tiles将该模式添加到自己的概念中是该模式具体化。Tiles的实现是以复合式模式为理论, 概念包括:Template,Attribute和Definition。视图助手模式的实现是View Preparer 概念。

模板:Template

在Tiles中,模板(Template)是一个页面的布局部分。你能将一个页面结构看成是由不同的需要填补空白组成。

注意:一个模板(Template)可以没有属性(attributes),这种情况下该模板可以直接使用。有属性的话就要先定义属性才能使用,不然的话就会在解析jsp页面的时候报错

属性:Attribute

属性是模板中的空白,它在你的应用程序中被填充到模板中。

属性又分为三种

string:属性是string的话,会将string直接呈现在页面。

template:属性是一个模板(Template),有无属性都行。如果有属性的话,你也要将他们填充后再呈现页面。

definition:它是一个可重复使用组成的页面,包含所有的属性来填充以呈现页面。

定义:definition

定义是呈现给最终用户的组合物;本质上,一个定义是由一个模板和完全或部分填充的属性组成的。说白了就是:一个定义是由一个模板和属性组成的。

3.常见问题

include也可以实现多个jsp共用一个jsp的内容,为什么要使用tiles呢?

4.解决方案

刚接触web开发的人或许知道jsp可以通过include标签动态插入一个jsp页面,这样可以实现多个jsp页面共用一个jsp的内容.但是如果有一个超级大网站,jsp页面以万计呢?

Tiles就是为你遇到的这种需求服务的
如果我们一个网站的布局基本一致,这个时候,我们最好定义一个模板,如layout.jsp
包括header,ad,content,bottom;content下面又包含几个部分left,middle,right.
如果我们不使用tiles,则在每个页面按位置include相关的页面,当页面布局发生改变的时候,我们去掉左边的一部分,这个时候需要到每个页面上去删除相应的include语句;
但如果我们采用tiles的话,就只需要更改layout.jsp就行了.
tiles为了更改的规范网站布局,采用模板机制使布局维护更简单,这是tiles的真正目的所在.

5.编码实战

详情见以下视频

6.扩展思考

关于视图解析器的优先级

在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称。如果返回了一个视图的名称,那么,使用哪一个视图解析器策略?

如果应用了多个视图解析器策略,那么就必须通过“order”属性来声明优先级,order值越低,则优先级越高

7.参考文献

参考一:Apache Tiles的基本使用

参考二:分分钟知道tiles框架是干嘛的

参考三:SpringMVC视图解析器:配置多个视图解析器的优先级

8.更多讨论

Q1:struts与tiles到底什么关系?

A:1.tiles的标签库文件从struts-el.jar文件取得。

2.tiles框架是struts框架的一部分,用tiles当然需要用到struts jar包中的东西了。

3.使用时,需要在页面引入<%@ taglib uri="http://struts.apache.org/tags-tiles-el" prefix="tiles"%>

Q2:ssh使用tiles框架,怎么使用struts2自定义的过滤器,例如过滤未登陆的用户?

A:struts2可以通过配置interceptor来实现过滤未登录用户,在struts.xml文件中进行配置即可。
Q3:那种大型网站干嘛不找前端?
A:Tiles很擅长处理后端动态模板的。那么问题又来了,现在也有很多技术适合做前端模板,比如ejs。ejs的工作方式是在js代码中动态选择ejs模板。现在简要分析一下ejs的工作流程,在js代码中确定模板以后,由js从后台拉取对应的ejs文件,然后将预先得到的数据填充到ejs模板中,最后才展现给终端用户。从处理速度上分析,Tiles的处理速度一般比js要快。从请求次数而言,使用Tiles时,终端用户只需要请求一次,若使用ejs,则需要请求两次。从可维护性而言,明显Tiles项目的维护性强于ejs。




猜你喜欢

转载自blog.csdn.net/jimo621/article/details/80325865