tiles框架簡單教程

一碗硬、背景介紹

如果我們所有的頁面都是靠對應的一個 jsp 頁面來完成的話維護起來會非常繁瑣定嗓,頁面之間有很多相似的部分奋早,如果我們想要修改這些部分那么我們就需要一個個的去修改對應的 jsp 頁面袖扛。這個時候 Tiles 就是為了讓我們從這種重復的體力活動中解放出來拦耐。

Tiles是一種 JSP 布局框架,主要目的是為了將 jsp 頁面拆解為多個子頁面榕暇,然后用來組合成一個最終表示用頁面用的,比如 head、footer彤枢,這樣的話狰晚,便于對頁面的機能的變更及維護。tiles使得 springmvc 在頁面的處理方面多了一種選擇缴啡。并且更容易實現代碼的重用壁晒。

二、demo 實戰(zhàn)

下面我來演示一下如何在 springmvc 中使用 Tiles 框架业栅。

1. 添加 tiles 的依賴文件

? <groupId>org.apache.tiles

? <artifactId>tiles-extras

? <version>3.0.7

? <groupId>org.apache.tiles

? <artifactId>tiles-servlet

? <version>3.0.7

? <groupId>org.apache.tiles

? <artifactId>tiles-jsp

? <version>3.0.7

</dependency>


2. 在 WEB-INF 文件夾下添加 Tiles 的配置文件 tiles.xml?

我們可以看到在這里首先我們定義了一個 base秒咐,這個名字可以任取,只要不和 controller 里面跳轉的 string 一樣就好碘裕。因為在 controller 里面跳轉網頁的時候設定的 string 就對應了我們配置文件中的 name 屬性携取。

在這個基礎框架中我們引用了一個布局文件 template.jsp【這個我后面會給出】,然后插入了預先設定好的 header 和 footer辽社。因為這些部分對于我們的網站的每個網頁來說都是一樣的濒翻。

接下來我們定義了頁面 home恭垦,它繼承了上述的框架,并且插入了自己獨一無二的 body 部分晤斩。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC

? ? ? ? "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"

? ? ? ? "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

? ? <!--主布局? -->

? ? <definition name="layout" template="/WEB-INF/views/layout/template.jsp"/>

? ? <!--主布局? -->

? ? <!-- 項目 -->

? ? <!--登錄頁面-->

? ? <definition name="*" extends="layout">

? ? ? ? <put-attribute name="header" value="/WEB-INF/views/layout/header.jsp"/>

? ? ? ? <!--這里{1}/{2}是通配符的意思,{1}代表definition name="*/*"中的第一個*姆坚,{2}代表第二個*-->

? ? ? ? <put-attribute name="body" value="/WEB-INF/views/layout/{1}.jsp" />

? ? ? ? <put-attribute name="footer" value="/WEB-INF/views/layout/footer.jsp"/>

</tiles-definitions>

3. 設定布局文件 template.jsp 與 其他子頁面

template.jsp 內容如下:

<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>

<c:set value="${pageContext.request.contextPath}" var="path" scope="page"/>

? ? <meta charset="utf-8">

? ? <title>${pageContext.request.contextPath}

? ? <meta http-equiv="X-UA-Compatible" content="IE=edge">

? ? <meta content="width=device-width, initial-scale=1.0" name="viewport" charset="UTF-8">

? ? <link rel="stylesheet" >

? ? <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">

? ? <script src="http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js">

? ? <link href="${path}/css/t11.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/base.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/bootstrap.min.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/Untitled-3.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/Untitled-1base.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/font.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/dfghrgdffbdfb6base.css" rel="stylesheet" type="text/css">

? ? <link href="${path}/css/ghjghjghjbnmyhj.css" rel="stylesheet" type="text/css">

<tiles:insertAttribute name="header"/>

<tiles:insertAttribute name="body"/>

<tiles:insertAttribute name="footer"/>

<script src="${path}/js/jquery.min.js">

<script src="${path}/js/bootstrap.min.js">

接下來澳泵,我們需要添加其他的子網頁,讓 tiles 來拼接它們兼呵。

header.jsp:

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>header</title>

</head>

<body>

<h1 style="font-weight: bold;color: silver;">Tiles</h1>

</body>

</html>

home.jsp:

<body>

hello tiles,I'm home.

</body>

footer.jsp:

<body>

? ? <div>

? ? ? ? <footer>

? ? ? ? <p class="pull-right">

? ? ? ? ? ? <a href="#">Back to top</a>

? ? ? ? </p>

? ? ? ? <p>

? ? ? ? ? ? ? 2016 Company, Inc. · <a href="#">Privacy</a> · <a href="#">Terms</a>

? ? ? ? </p>

? ? ? ? </footer>

? ? </div>

</body>

3. 在 springmvc 配置文件中啟用 Tiles

<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">

<property name="viewClass">

<value>org.springframework.web.servlet.view.tiles3.TilesView</value>

</property>

</bean>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">

<property name="definitions">

<list>

<value>/WEB-INF/tiles.xml</value>

</list>

</property>

</bean>

最后我們在 controller 里面設置好跳轉就可以把項目跑起來了烹俗!

需要注意的是 controller 只能跳轉到 tiles.xml 中定義的 name,否則 tiles 不知道我們到底需要訪問什么頁面萍程。

三幢妄、我們可能會遇到的問題

1. 網頁中文亂碼

? ? 由于我們把網頁拆分成了多個子 jsp 文件,所以每個文件都是單獨經過應用服務器編譯后再去拼接茫负,這個時候必須要每個 jsp 頁面的上方添加如下標簽蕉鸳,確定其編碼格式。

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>

四忍法、其他的思考

1. tiles 套頁面是否有學習的必要潮尝?

答:有的。雖然現在都流行使用 restful 的接口饿序,前后端分離開發(fā)勉失。但是這種套頁面的開發(fā)方式在短時間內還會有一定的需求。

2. tiles 項目早已停止開發(fā)原探,是否有其他替代方案乱凿?

答:Sitemesh3.0

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末顽素,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子徒蟆,更是在濱河造成了極大的恐慌胁出,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件段审,死亡現場離奇詭異全蝶,居然都是意外死亡,警方通過查閱死者的電腦和手機寺枉,發(fā)現死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門抑淫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姥闪,你說我怎么就攤上這事始苇。” “怎么了甘畅?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵埂蕊,是天一觀的道長。 經常有香客問我疏唾,道長蓄氧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任槐脏,我火速辦了婚禮喉童,結果婚禮上,老公的妹妹穿的比我還像新娘顿天。我一直安慰自己堂氯,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布牌废。 她就那樣靜靜地躺著咽白,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸟缕。 梳的紋絲不亂的頭發(fā)上晶框,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音懂从,去河邊找鬼授段。 笑死,一個胖子當著我的面吹牛番甩,可吹牛的內容都是我干的侵贵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼缘薛,長吁一口氣:“原來是場噩夢啊……” “哼窍育!你這毒婦竟也來了卡睦?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蔫骂,失蹤者是張志新(化名)和其女友劉穎么翰,沒想到半個月后牺汤,有當地人在樹林里發(fā)現了一具尸體辽旋,經...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年檐迟,在試婚紗的時候發(fā)現自己被綠了补胚。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡追迟,死狀恐怖溶其,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情敦间,我是刑警寧澤瓶逃,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站廓块,受9級特大地震影響厢绝,放射性物質發(fā)生泄漏。R本人自食惡果不足惜带猴,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一昔汉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拴清,春花似錦靶病、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沪停,卻和暖如春煤辨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牙甫。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工掷酗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窟哺。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓泻轰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親且轨。 傳聞我的和親對象是個殘疾皇子浮声,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內容