1. 程式人生 > >spring實戰-Spring-Tiles模板的應用

spring實戰-Spring-Tiles模板的應用

第五篇:Spring-Tiles模板的應用

在網頁搭建時,為了保持一個站點網站的風格統一,網頁往往會包含相同的公共頭尾或者側邊欄,如果把這些功能的頁面區域寫到各個頁面裡面,會導致很多的重複工作,而且帶來繁重的後期維護成本。apache tiles 提供了一個比較好的解決方案,就是定製網頁模板,通過模板搭建網站各個網頁共同的區域,每個頁面只維護自己業務需要的區域。

使用apache tiles需要新增必要的jar包,在mvn工程中引用一下兩個包可以了,它們會再去引用Tiles底層的包

<dependency>
			<groupId>org.apache.tiles</groupId>
			<artifactId>tiles-servlet</artifactId>
			<version>${tiles.version}</version>
		</dependency>
		<dependency>
			<groupId>org.apache.tiles</groupId>
			<artifactId>tiles-jsp</artifactId>
			<version>${tiles.version}</version>
		</dependency>

需要使用TilesViewResolver和TilesConfigurer來定義檢視解析器,需要放棄我們之前使用的JSP檢視解析器InternalResourceViewResolver

@Bean
	public ViewResolver viewResolver() {
		return new TilesViewResolver();
	}
@Bean
	public TilesConfigurer tilesConfigurer(){
		TilesConfigurer tiles = new TilesConfigurer();
		tiles.setDefinitions(new String("/WEB-INF/**/tiles.xml"));//這裡的路徑可以是固定路徑名,也可以時模糊匹配
		tiles.setCheckRefresh(true);
		return tiles;
	}
然後定義tiles模板tiles.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>

	<definition name="base" template="/WEB-INF/layout/page.jsp">
		<!-- 這裡可以定義任意多個屬性模組,然後在page.jsp中組裝 -->
		<put-attribute name="header" value="/WEB-INF/layout/header.jsp" />
		<put-attribute name="footer" value="/WEB-INF/layout/footer.jsp" />
	</definition>

	<!-- 繼承與base頁,將home頁填入佈局當中 -->
	<definition name="home" extends="base">
		<put-attribute name="body" value="/WEB-INF/views/home.jsp" />
	</definition>
</tiles-definitions>
home.jsp 就成為模板頁面中的一個區域了,所以可以去掉home.jsp中的<html><body>標籤

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>

<h2><s:message code="idat.welcome" text="Welcome"/></h2>

至此,就可以使用我們的Tiles模板頁面了