日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Apache Tiles的基本使用

發(fā)布時(shí)間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Apache Tiles的基本使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到教程。

1、概述

?

????對(duì)于一個(gè)新的技術(shù),了解其基本的概念和和原理是學(xué)好該技術(shù)的基礎(chǔ)。

?

2、Tiles的概念

???????Tiles 是復(fù)合視圖模式(Composite View pattern)的一個(gè)實(shí)現(xiàn)。Tiles將該模式添加到自己的概念中是該模式具體化。Tiles的實(shí)現(xiàn)是以復(fù)合式模式為理論,? ?概念包括:Template,Attribute和Definition。視圖助手模式的實(shí)現(xiàn)是View Preparer 概念。

? ? 接下來講解相關(guān)的概念:Template,Attribute,Definition和View Preparer。

2.1、模板:Template

????在Tiles中,模板(Template)是一個(gè)頁(yè)面的布局部分。你能將一個(gè)頁(yè)面結(jié)構(gòu)看成是由不同的需要填補(bǔ)空白組成。

? ? 例如,考慮這個(gè)“典型布局”頁(yè)面結(jié)構(gòu)。? ??

? ? 你能夠?qū)⒃摻Y(jié)構(gòu)復(fù)制到一個(gè)新建的JSP頁(yè)面中,如下所示

? ? template.jsp

????

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <table><tr><td colspan="2"><tiles:insertAttribute name="header" /></td></tr><tr><td><tiles:insertAttribute name="menu" /></td><td><tiles:insertAttribute name="body" /></td></tr><tr><td colspan="2"><tiles:insertAttribute name="footer" /></td></tr> </table>

注意:一個(gè)模板(Template)可以沒有屬性(attributes),這種情況下該模板可以直接使用。有屬性的話就要先定義屬性才能使用,不然的話就會(huì)在解析jsp頁(yè)面的時(shí)候報(bào)錯(cuò)。

2.2、屬性:Attribute

????屬性是模板中的空白,它在你的應(yīng)用程序中被填充到模板中。屬性可以是以下三種類型:

?

  • string:屬性是string的話,會(huì)將string直接呈現(xiàn)在頁(yè)面。
  • template:屬性是一個(gè)模板(Template),有無屬性都行。如果有屬性的話,你也要將他們填充后再呈現(xiàn)頁(yè)面。
  • definition:它是一個(gè)可重復(fù)使用組成的頁(yè)面,包含所有的屬性來填充以呈現(xiàn)頁(yè)面。?

?

2.3、定義:definition

? ??定義是呈現(xiàn)給最終用戶的組合物;本質(zhì)上,一個(gè)定義是由一個(gè)模板和完全或部分填充的屬性組成的。說白了就是:一個(gè)定義是由一個(gè)模板和屬性組成的。

?

  • 如果所有的“屬性”都填充了,它將可以呈現(xiàn)給最終用戶。
  • 如果不是所有的屬性都填充了,這個(gè)定義稱為“抽象定義”(abastract definition),它可以被用作“父定義”,讓其他“定義”繼承,失去的“屬性”能在運(yùn)行時(shí)填充。

? ? 例如,你可以按之前看過的“典型模板”創(chuàng)建創(chuàng)建一個(gè)頁(yè)面,修改Tiles的配置文件,如下:

?

?

<definition name="myapp.homepage" template="/layouts/classic.jsp"><put-attribute name="header" value="/tiles/banner.jsp" /><put-attribute name="menu" value="/tiles/common_menu.jsp" /><put-attribute name="body" value="/tiles/home_body.jsp" /><put-attribute name="footer" value="/tiles/credits.jsp" /> </definition>

?

?

?

?

?

2.4、視圖助手:View Preparer

????有時(shí)候一個(gè)定義在呈現(xiàn)之前需要“預(yù)處理”。例如,顯示一個(gè)menu時(shí),menu的結(jié)構(gòu)必須被創(chuàng)建并且已經(jīng)保存在request范圍內(nèi)。

? ? 為了達(dá)到“預(yù)處理?”,視圖助手將會(huì)被用到,視圖助手將在呈現(xiàn)定義之前被調(diào)用,因此在將“定義”呈現(xiàn)所需的東西都會(huì)被正確的“預(yù)處理?”。

3、創(chuàng)建和使用Tiles 頁(yè)面

? ? 安裝tiles和學(xué)習(xí)了Tiles的一些概念后,是時(shí)候創(chuàng)建一些頁(yè)面了。以下你將學(xué)習(xí)到創(chuàng)建可重用的頁(yè)面和完整頁(yè)面的步驟。

3.1、創(chuàng)建一個(gè)模板?

? ? 我們使用“典型布局”頁(yè)面結(jié)構(gòu):

????創(chuàng)建一個(gè)JSP頁(yè)面作為這個(gè)布局并將其保存在/layouts/classic.jsp文件中

?

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <html><head><title><tiles:getAsString name="title"/></title></head><body><table><tr><td colspan="2"><tiles:insertAttribute name="header" /></td></tr><tr><td><tiles:insertAttribute name="menu" /></td><td><tiles:insertAttribute name="body" /></td></tr><tr><td colspan="2"><tiles:insertAttribute name="footer" /></td></tr></table></body> </html>

?

?

?

?

?

?

? ? ????在這個(gè)模板中有5個(gè)屬性:title(string類型的屬性),header,menu,body和footer。

3.2、創(chuàng)建組成頁(yè)面

? ??在這個(gè)階段,你需要?jiǎng)?chuàng)建4個(gè)用于替換之前創(chuàng)建模板中的?header,menu,body和footer屬性的JSP頁(yè)面。

? ? 你可以放置任何你想放的東西在這個(gè)頁(yè)面中,他們僅僅是一個(gè)測(cè)試。

3.3、創(chuàng)建一個(gè)定義

? ? 默認(rèn)情況,“定義”文件是/WEB-INF/tiles.xml。如果你使用的是CompleteAutoloadTilesListener,tiles將會(huì)使用webapp目錄下按/WEB-INF/tiles*.xml匹配或classpath下按/META-INF/tiles*.xml匹配的任何文件作為“定義?”文件;如果發(fā)現(xiàn)多個(gè),tiles將會(huì)合并這些文件到一起。

? ? 但現(xiàn)在,我們使用默認(rèn)情況并創(chuàng)建/WEN-INF/tiles.xml文件,該文件下包含一個(gè)“定義”。

?

?

<?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"> <tiles-definitions><definition name="myapp.homepage" template="/layouts/classic.jsp"><put-attribute name="title" value="Tiles tutorial homepage" /><put-attribute name="header" value="/tiles/banner.jsp" /><put-attribute name="menu" value="/tiles/common_menu.jsp" /><put-attribute name="body" value="/tiles/home_body.jsp" /><put-attribute name="footer" value="/tiles/credits.jsp" /></definition> </tiles-definitions>

?

?

?

?

?

3.4、渲染定義

? ??創(chuàng)建完定以后,你就能渲染它了。

?

  • 通過使用<tiles:insertDefinition />標(biāo)簽,將定義插入一個(gè)JSP頁(yè)面。
  • <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <tiles:insertDefinition name="myapp.homepage" />
    ?
  • ?其他情況,你可以直接使用response來渲染定義,通過使用Tiles 容器
  • TilesContainer container = TilesAccess.getContainer(request.getSession().getServletContext()); container.render("myapp.homepage", request, response);
    ?
  • 通過使用Tiles提供的Rendering Utilities。例如,如果你已經(jīng)配置了TilesDispatchServlet,你能通過請(qǐng)求:http://example.com/webapp/myapp.homepage.tiles來渲染“定義”。

通過使用支持的框架(struts,spring等)來渲染“定義”。?
?

總結(jié)

以上是生活随笔為你收集整理的Apache Tiles的基本使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。