1.引入jar包
<properties>
<!-- tiles版本号 -->
<tiles.version>2.2.1</tiles.version>
</properties>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-template</artifactId>
<version>${tiles.version}</version>
</dependency>
2.取消之前spirngmvc.xml中配置的试图层
取消:
<!-- 配置试图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 引入jstl -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<!-- 引入试图前缀 -->
<property name="prefix" value="/"></property>
<!-- 引入试图后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
配置:
<!-- 代替视图解析器配置到SpringMvc中 集成tiles -->
<!-- 页面布局 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.tiles2.TilesView
</value>
</property>
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<!-- 引入外部的页面布局文件 -->
<value>classpath:views.xml</value>
</list>
</property>
</bean>
3.在config下新建views.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.definition" template="/jsp/layout/layout.jsp">
<put-attribute name="title" value="个人学习平台" />
<put-attribute name="header" value="/jsp/layout/template/header.jsp" />
<put-attribute name="sidebar" value="/jsp/layout/template/sidebar.jsp" />
<put-attribute name="content" value="/jsp/layout/template/content.jsp" />
<put-attribute name="footer" value="/jsp/layout/template/footer.jsp" />
</definition>
<!-- 定义测试跳转页面 -->
<definition name="test" extends="base.definition">
<put-attribute name="content" value="test.jsp" />
</definition>
</tiles-definitions>
4.创建布局的jsp页面
1. 在webapp 下新建 jsp目录及jsp/layout/template 目录
分别新建以下jsp页面
/jsp/layout/layout.jsp --布局声明
/jsp/layout/template/header.jsp --头部
/jsp/layout/template/sidebar.jsp --菜单
/jsp/layout/template/content.jsp --内容
/jsp/layout/template/footer.jsp --底部
2.jsp内容分别如下
1.布局声明
<!-- 引入tiles 标签库 -->
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<!-- 引入views 中定义好的标题 -->
<title><tiles:insertAttribute name="title" ignore="true" /></title>
</head>
<body>
<table>
<tr> <!--头 -->
<td colspan="2" > <tiles:insertAttribute name="header" /></td>
</tr>
<tr>
<!--左侧菜单 -->
<td><tiles:insertAttribute name="sidebar" /></td>
<!--右侧菜单 -->
<td><tiles:insertAttribute name="content" /></td>
</tr>
<tr>
<!--尾 -->
<td colspan="2" ><tiles:insertAttribute name="footer" /></td>
</tr>
</table>
</body>
</body>
</html>
2.头部
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 100px; background: red;">
我是头部
</div>
3.菜单
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 500px;width:80px; background: red;">
<a href="testContent.do">我是菜单,点我局部刷新内容</a>
</div>
4.内容
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 500px;width:500px; background: red;">
我是内容
</div>
5.底部
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 100px; background:yellow;">
我是底部
</div>
5.测试:
新建testController
@Controller
public class TestController {
@RequestMapping("/test.do")
public ModelAndView test(HttpServletRequest request,HttpServletResponse response){
return new ModelAndView("base.definition");//因为加了前后缀,实际跳转layout.jsp
}
@RequestMapping("/testContent.do")
public ModelAndView testContent(HttpServletRequest request,HttpServletResponse response){
return new ModelAndView("testContent");//因为加了前后缀,实际跳转test.jsp
}
}
6.新建index.jsp:
<a href="test.do"> 跳转111111111</a>
7.新建test.jsp:
<div style="height: 500px;width:500px; background:white;">
测试tiles成功
</div>
<properties>
<!-- tiles版本号 -->
<tiles.version>2.2.1</tiles.version>
</properties>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>${tiles.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-template</artifactId>
<version>${tiles.version}</version>
</dependency>
2.取消之前spirngmvc.xml中配置的试图层
取消:
<!-- 配置试图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 引入jstl -->
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView"></property>
<!-- 引入试图前缀 -->
<property name="prefix" value="/"></property>
<!-- 引入试图后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
配置:
<!-- 代替视图解析器配置到SpringMvc中 集成tiles -->
<!-- 页面布局 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass">
<value>
org.springframework.web.servlet.view.tiles2.TilesView
</value>
</property>
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<!-- 引入外部的页面布局文件 -->
<value>classpath:views.xml</value>
</list>
</property>
</bean>
3.在config下新建views.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.definition" template="/jsp/layout/layout.jsp">
<put-attribute name="title" value="个人学习平台" />
<put-attribute name="header" value="/jsp/layout/template/header.jsp" />
<put-attribute name="sidebar" value="/jsp/layout/template/sidebar.jsp" />
<put-attribute name="content" value="/jsp/layout/template/content.jsp" />
<put-attribute name="footer" value="/jsp/layout/template/footer.jsp" />
</definition>
<!-- 定义测试跳转页面 -->
<definition name="test" extends="base.definition">
<put-attribute name="content" value="test.jsp" />
</definition>
</tiles-definitions>
4.创建布局的jsp页面
1. 在webapp 下新建 jsp目录及jsp/layout/template 目录
分别新建以下jsp页面
/jsp/layout/layout.jsp --布局声明
/jsp/layout/template/header.jsp --头部
/jsp/layout/template/sidebar.jsp --菜单
/jsp/layout/template/content.jsp --内容
/jsp/layout/template/footer.jsp --底部
2.jsp内容分别如下
1.布局声明
<!-- 引入tiles 标签库 -->
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<!-- 引入views 中定义好的标题 -->
<title><tiles:insertAttribute name="title" ignore="true" /></title>
</head>
<body>
<table>
<tr> <!--头 -->
<td colspan="2" > <tiles:insertAttribute name="header" /></td>
</tr>
<tr>
<!--左侧菜单 -->
<td><tiles:insertAttribute name="sidebar" /></td>
<!--右侧菜单 -->
<td><tiles:insertAttribute name="content" /></td>
</tr>
<tr>
<!--尾 -->
<td colspan="2" ><tiles:insertAttribute name="footer" /></td>
</tr>
</table>
</body>
</body>
</html>
2.头部
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 100px; background: red;">
我是头部
</div>
3.菜单
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 500px;width:80px; background: red;">
<a href="testContent.do">我是菜单,点我局部刷新内容</a>
</div>
4.内容
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 500px;width:500px; background: red;">
我是内容
</div>
5.底部
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<div style="height: 100px; background:yellow;">
我是底部
</div>
5.测试:
新建testController
@Controller
public class TestController {
@RequestMapping("/test.do")
public ModelAndView test(HttpServletRequest request,HttpServletResponse response){
return new ModelAndView("base.definition");//因为加了前后缀,实际跳转layout.jsp
}
@RequestMapping("/testContent.do")
public ModelAndView testContent(HttpServletRequest request,HttpServletResponse response){
return new ModelAndView("testContent");//因为加了前后缀,实际跳转test.jsp
}
}
6.新建index.jsp:
<a href="test.do"> 跳转111111111</a>
7.新建test.jsp:
<div style="height: 500px;width:500px; background:white;">
测试tiles成功
</div>