sitemesh 2.4
SiteMesh 是一個(gè)網(wǎng)頁(yè)布局和修飾的框架,利用它可以將網(wǎng)頁(yè)的內(nèi)容和頁(yè)面結(jié)構(gòu)分離,以達(dá)到頁(yè)面結(jié)構(gòu)共享的目的。
它通過(guò)對(duì)所有的用戶請(qǐng)求進(jìn)行過(guò)濾,并對(duì)服務(wù)器向客戶端響應(yīng)也進(jìn)行過(guò)濾,從而給原始的服務(wù)器響應(yīng)加入一定的裝飾,可以是header、footer等,然后將經(jīng)過(guò)裝飾后的頁(yè)面送回瀏覽者。對(duì)于被裝飾的頁(yè)面而言,它無(wú)需知道自身被誰(shuí)裝飾,也無(wú)從知道自身被誰(shuí)裝飾。
SiteMesh通過(guò)配置文件來(lái)配置指定的裝飾器,用于過(guò)濾某些頁(yè)面,則該裝飾器會(huì)裝飾這些頁(yè)面,從而提供更好的頁(yè)面效果,通過(guò)SiteMesh的頁(yè)面裝飾,可以提供更好的代碼復(fù)用,所有的頁(yè)面裝飾效果耦合在目標(biāo)頁(yè)面中,無(wú)需使用include指令來(lái)顯式包含裝飾效果,目標(biāo)頁(yè)面與裝飾頁(yè)面完全分開(kāi)。提供更好的解耦,而且可以在應(yīng)用中所有的頁(yè)面都使用相同的裝飾頁(yè)面,整個(gè)Web應(yīng)用會(huì)有更統(tǒng)一的風(fēng)格,會(huì)提供更好的整體效果。
SiteMesh通過(guò)Filter來(lái)截取request和response,然后給原始的頁(yè)面加入一定的裝飾,再把結(jié)果返回給客戶端。
使用SiteMesh的步驟:
1、maven引入:
<dependency> <groupId>opensymphony</groupId><artifactId>sitemesh</artifactId><version>2.4.2</version> </dependency>2、在web.xml中增加過(guò)濾器:
<!-- Sitemesh --> <filter> <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>3、在WEB-INF中創(chuàng)建decorators.xml文件: <?xml version="1.0" encoding="UTF-8"?> <decorators defaultdir="/layouts/"> <!-- 不需要過(guò)濾的請(qǐng)求 --> <excludes> <pattern>/static/*</pattern> <pattern>/remote/*</pattern> </excludes> <!-- 定義裝飾器要過(guò)濾的頁(yè)面 --> <decorator name="default" page="default.jsp"> <pattern>/*</pattern> </decorator> </decorators>
1、在decorator標(biāo)簽的page屬性是指向的jsp裝飾頁(yè)面,下面攔截的/*是真正的普通頁(yè)面,要被page指定的頁(yè)面所修飾,修飾頁(yè)面就是寫了一堆SiteMesh的標(biāo)簽,然后將pattern標(biāo)簽上url攔截到的被裝飾頁(yè)面的對(duì)應(yīng)裝飾頁(yè)面標(biāo)簽的head和body提取過(guò)來(lái)填充到裝飾頁(yè)面中。
2、excludes標(biāo)簽下配置的是不需要攔截忽略的url。
3、可以不需要使用<pattern>進(jìn)行攔截被裝飾頁(yè)面,可使用meta進(jìn)行攔截<meta name="xxx" content="xxx" />
引入了SiteMesh標(biāo)簽:
<sitemesh:title /> 會(huì)自動(dòng)替換為被過(guò)濾頁(yè)面的title。
<sitemesh:head /> 會(huì)把被過(guò)濾頁(yè)面head里面的東西(除了title)放到這里。
<sitemesh:body /> 被過(guò)濾的頁(yè)面的body內(nèi)容會(huì)放到這里。
總結(jié)
以上是生活随笔為你收集整理的sitemesh 2.4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android系统提供了url通信,An
- 下一篇: 绿茶