spring實戰-Spring-Tiles模板的應用
阿新 • • 發佈:2018-11-04
第五篇: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
然後定義tiles模板tiles.xml@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; }
home.jsp 就成為模板頁面中的一個區域了,所以可以去掉home.jsp中的<html><body>標籤<?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>
<%@ 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模板頁面了