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