? ? ? ? 大家好比伏,我是IT修真院北京分院第31期的學(xué)員俭厚,一枚正直純潔善良的JAVA程序員瑟曲。今天給大家分享一下士鸥,修真院官網(wǎng)JAVA任務(wù)4的深度思考——為什么要使用Tiles框架.
1.背景介紹
TILES框架
Tiles是一種JSP布局框架闲孤,主要目的是為了將復(fù)雜的jsp頁面作為一個的頁面的部分機(jī)能,然后用來組合成一個最終表示用頁面用的烤礁,這樣的話讼积,便于對頁面的各個機(jī)能的變更及維護(hù)。Tiles使得struts在頁面的處理方面多了一種選擇脚仔。并且更容易實現(xiàn)代碼的重用勤众。
最早的Tiles是組裝在Struts1.1里面的(Struts-Tiles),后面發(fā)展為獨立的Tiles框架(Tiles 2+鲤脏,目前最新版本為3.0)们颜。
TILES頁面布局
Tiles增加了layout的概念,其實就是把一個頁面劃分為幾塊猎醇。通常的來說一個頁面大概可以劃分為如下幾塊:
head頁面頭部:存放一個運用的公共信息:logo等窥突,如果是網(wǎng)站可能是最上面的一塊。
menu頁面菜單:放置一個運用中需要使用的菜單硫嘶,或者在每一個頁面都使用的連接阻问。footer頁面尾部:如版權(quán)信息等。body頁面主題內(nèi)容:每個頁面相對獨立的內(nèi)容沦疾。
如果按上面的劃分那對每一個頁面我們只要寫body里面的內(nèi)容称近,其他的就可以共享重用第队。如果大多數(shù)頁面的布局基本相同我們甚至可以使用一個jsp文件根據(jù)不同的參數(shù)調(diào)用不同的body。
2.知識剖析
TILES框架
Tiles框架可以令我們組合可以復(fù)用的Tiles來搭建網(wǎng)頁刨秆。例如凳谦,下圖中的頁面就是通過組合一個header,?一個footer,?一個menu?和一個body搭建起來的。
每一個Tiles(header,?menu,?body,?...)都是一個JSP頁面坛善,它們也可以通過組合其他的Tiles來搭建晾蜘。
應(yīng)用Tiles就好比是應(yīng)用Java的方法:需要你定義Tiles(方法體),然后你才能夠在任何你需要的地方“調(diào)用”該方法體眠屎,并傳遞一些參數(shù)。在Tiles中肆饶,為了避免與request參數(shù)相混淆改衩,參數(shù) (parameters)被稱為屬性(attributes)。
Tiles的方法體(也可以說是內(nèi)容——譯者注)可以是一個簡單的JSP頁面驯镊,?或者是一個Struts的動作(action)葫督,或者任何一個指向現(xiàn)存的網(wǎng)頁資源的URI。
插入或者調(diào)用Tiles可以通過在JSP中的任何位置置入如下tag來完成:tiles:insert?...板惑。插入也可以通過下面的方法來完成:指定一個作為Struts?forward的路徑的自定義名橄镜;或者指定一個作為Struts?action的input,forward或者include屬性的自定義名冯乘。
Tiles的方法體是用來創(chuàng)建版面布局洽胶,可復(fù)用部分等的,而Tiles的插入操作是用來插入Tiles的.同一個Tiles可以在同一個站點甚至同一個頁面被重用多次。
Tiles的插入可以與一個在Tiles中稱作“definition”的邏輯名聯(lián)系起來裆馒。一個Tiles的definition包含一個邏輯名姊氓,一個主體頁面和一些屬性值。definition的聲明并不插入與其相關(guān)聯(lián)的Tiles方法體喷好,它只是讓Tiles與它的邏輯名關(guān)聯(lián)起來翔横。可以在任何能夠插入Tiles地方運用定義的邏輯名梗搅,這樣與其對應(yīng)的Tiles及其屬性就被插入進(jìn)來了禾唁。
Tiles的definition的定義可以在JSP頁面中進(jìn)行,也可以在一個或者多個中心控制文件中進(jìn)行无切。 Definition可以繼承于另外一個Tiles的definition荡短,重載一些屬性,添加一些新的屬性等等订雾。這就允許“父類”的definition定義一些通用的layout,?header,?menu,?footer.?所有其他繼承于該父類的 definition可以簡單地通過改變其definition來改變整個頁面肢预。
嵌套TILES
一個 tile 布局可以插入到另一個 tile 布局中,依此類推洼哎。實際上烫映,創(chuàng)建的 tile 布局如此之 小沼本,以至于它們本身并不是真正的模板。相反锭沟,它們是更類似于自定義標(biāo)簽的小型可視組件抽兆,而不是頁面模板。
TILES運行流程
當(dāng)Spring MVC的DispatchServlet收到來自瀏覽器的請求后族淮,分析出需要請求的控制器辫红,然后訪問解析出來的控制器StudentController的home方法,接著就開始解析視圖了祝辣。因為我們用的是Tiles的視圖解析器贴妻,激情飽滿的二級制代碼就訪問到了layout.xml (jnshu.xml),最后根據(jù)layout.xml的配置組裝成我們看到的頁面。
為什么要用Tiles框架
舉個通俗的例子,現(xiàn)在蝙斜,假如有一個超級大的電子商務(wù)網(wǎng)站名惩,網(wǎng)站擁有10萬個JSP頁面(悄悄告訴你,這僅僅是一個假設(shè))孕荠,并且每個JSP都引用了同一個JSP(我們稱這個JSP頁面為A吧)∶漯模現(xiàn)在你就是這個網(wǎng)站的開發(fā)人員,有一天老板跑到你面前說:“大量用戶反饋頁面A設(shè)計得太丑稚伍,嚴(yán)重影響用戶體驗弯予,所以你今天必須要讓頁面A從網(wǎng)站上消失,否則炒魷魚走人”个曙,這個兇神惡霸的老板說完就甩手走出去了锈嫩,你沒有任何辯解的機(jī)會。這時困檩,恐怕你不會覺得自己一人能夠搞定祠挫,那怎么辦?程序員都有很多好基友悼沿,找一百個基友來一起改等舔,每人只需要改1000個頁面。不然糟趾,只有垂頭喪氣地收拾好東西離職了慌植。
但是,要是有一天老板又跑過來找你义郑,讓你為每個JSP頁面的底部加一個跳舞的小黃人蝶柿,又該怎么辦呢?那有沒有一種方法非驮,可以不用請一百個好基友幫忙交汤,就可以在十分鐘之內(nèi)完成老板交給你的任務(wù)?沒錯,Tiles就是為你遇到的這種需求服務(wù)的芙扎。一旦你在網(wǎng)站系統(tǒng)中使用了Tiles技術(shù)星岗,若老板讓你刪除10萬個頁面所引用的一個JSP,如果你的速度快的話戒洼,你可以在10秒鐘之內(nèi)解決俏橘。那要想再讓這10萬個頁面去引用一個JSP呢?也是一樣的操作圈浇,非常簡單寥掐。
3.編碼實戰(zhàn)
4.常見問題
1,在使用Tile框架中要注意導(dǎo)入Tiles的jar包沖突問題.
5.參考文獻(xiàn)
https://blog.csdn.net/zaowei21/article/details/215077
https://blog.csdn.net/chj225500/article/details/7055526
http://mengyang.iteye.com/blog/1156733
6.更多討論
今天的分享就到這里啦,歡迎大家點贊磷蜀、轉(zhuǎn)發(fā)召耘、留言、拍磚~
????????技能樹.IT修真院
????????“我們相信人人都可以成為一個工程師蠕搜,現(xiàn)在開始怎茫,找個師兄,帶你入門妓灌,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷妹巯埽”虫埂。
????????這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線圃验,學(xué)習(xí)透明化掉伏,成長可見化,師兄1對1免費指導(dǎo)澳窑「ⅲ快來與我一起學(xué)習(xí)吧~
我的邀請碼:17742750,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/17742750
來源:簡書
著作權(quán)歸作者所有摊聋。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)鸡捐,非商業(yè)轉(zhuǎn)載請注明出處。