问题:如果大量的jsp页面具有相同的页面结构,例如页面的顶端都有一个页眉,低端都有一个页脚,左侧都有一个菜单栏,对于每个页面都要复制粘贴相同的一些代码.为了解决这个问题使用Tiles技术
Apache_Tiles:通过"生成一个模板,将内容主体嵌入模板中"的方案去除重复代码
配置:
在WebConfig中添加两个Bean:一定要去掉InternalResourceViewResolver不然Tiles无效
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer configurer = new TilesConfigurer();
//指定定义文件,**表示遍历所有子路径
configurer.setDefinitions(new String[] {"/WEB-INF/**/tiles.xml"});
//开启刷新功能
configurer.setCheckRefresh(true);
return configurer;
}
@Bean
public ViewResolver viewResolver() {
return new TilesViewResolver();
}
文件:
一.Tiles的定义文件:tiles.xml
几个重要的标签:
1.<tiles-definitions>:根标签
所有的定义标签都要写在这个标签体中
2.<definition> :定义标签,定义布局
参数:
.name:布局名称,匹配逻辑视图名称
.template:定义模板布局的布局文件
.extends:指定当前布局所继承的布局
例:
定义模板布局:
<definition name="base" template="/WEB-INF/layout/page.jsp">
定义一个被嵌入内容的布局:
<definition name="demo" extends="base">
3.<put-attribute> :放在<definition>标签体中,在布局中填入放入元素,相当于对jsp文件的声明
参数:
.name:元素名称
.value:元素的路径
例:
声明一个jsp文件
<put-attribute name="body" value="/WEB-INF/views/demo.jsp" />
二.模板文件:一个.jsp文件,特殊在使用了"http://tiles.apache.org/tags-tiles"标签库,从而可以在本页面中插入其他页面(被插入的页面必须是在定义文件中使用<put-attribute>标签声明过元素)
重要标签:
<t:insertAttribute>
参数:
name:被插入的元素名称,必须在定义文件中被声明过
Apache_Tiles:通过"生成一个模板,将内容主体嵌入模板中"的方案去除重复代码
配置:
在WebConfig中添加两个Bean:一定要去掉InternalResourceViewResolver不然Tiles无效
@Bean
public TilesConfigurer tilesConfigurer() {
TilesConfigurer configurer = new TilesConfigurer();
//指定定义文件,**表示遍历所有子路径
configurer.setDefinitions(new String[] {"/WEB-INF/**/tiles.xml"});
//开启刷新功能
configurer.setCheckRefresh(true);
return configurer;
}
@Bean
public ViewResolver viewResolver() {
return new TilesViewResolver();
}
文件:
一.Tiles的定义文件:tiles.xml
几个重要的标签:
1.<tiles-definitions>:根标签
所有的定义标签都要写在这个标签体中
2.<definition> :定义标签,定义布局
参数:
.name:布局名称,匹配逻辑视图名称
.template:定义模板布局的布局文件
.extends:指定当前布局所继承的布局
例:
定义模板布局:
<definition name="base" template="/WEB-INF/layout/page.jsp">
定义一个被嵌入内容的布局:
<definition name="demo" extends="base">
3.<put-attribute> :放在<definition>标签体中,在布局中填入放入元素,相当于对jsp文件的声明
参数:
.name:元素名称
.value:元素的路径
例:
声明一个jsp文件
<put-attribute name="body" value="/WEB-INF/views/demo.jsp" />
二.模板文件:一个.jsp文件,特殊在使用了"http://tiles.apache.org/tags-tiles"标签库,从而可以在本页面中插入其他页面(被插入的页面必须是在定义文件中使用<put-attribute>标签声明过元素)
重要标签:
<t:insertAttribute>
参数:
name:被插入的元素名称,必须在定义文件中被声明过