大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務(wù)器運(yùn)維,大數(shù)據(jù),SEO, 網(wǎng)站開發(fā)、運(yùn)維,云服務(wù)技術(shù)支持,IM服務(wù)供應(yīng)商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評論 - 117, 引用 - 0
          數(shù)據(jù)加載中……

          SiteMesh學(xué)習(xí)筆記1(一個優(yōu)于Apache Tiles的Web頁面布局、裝飾框架)

          OS(OpenSymphony)的SiteMesh是一個用來在JSP中實(shí)現(xiàn)頁面布局和裝飾(layout and decoration)
          的框架組件,能夠幫助網(wǎng)站開發(fā)人員較容易實(shí)現(xiàn)頁面中動態(tài)內(nèi)容和靜態(tài)裝飾外觀的分離。

                 Sitemesh是由一個基于Web頁面布局、裝飾以及與現(xiàn)存Web應(yīng)用整合的框架。它能幫助我們在由大
          量頁面構(gòu)成的項(xiàng)目中創(chuàng)建一致的頁面布局和外觀,如一致的導(dǎo)航條,一致的banner,一致的版權(quán),等等。
          它不僅僅能處理動態(tài)的內(nèi)容,如jsp,php,asp等產(chǎn)生的內(nèi)容,它也能處理靜態(tài)的內(nèi)容,如htm的內(nèi)容,
          使得它的內(nèi)容也符合你的頁面結(jié)構(gòu)的要求。甚至于它能將HTML文件象include那樣將該文件作為一個面板
          的形式嵌入到別的文件中去。所有的這些,都是GOF的Decorator模式的最生動的實(shí)現(xiàn)。盡管它是由java語言來實(shí)現(xiàn)的,但它能與其他Web應(yīng)用很好地集成。

            官方:http://www.opensymphony.com/sitemesh/

            下載地址:http://www.opensymphony.com/sitemesh/download.action 目前的最新版本是Version 2.3

          本文介紹sitemesh的簡單應(yīng)用:

          首先下載 sitemesh.jar, 拷貝到你的WEB-INF/lib文件夾下,然后將一下代碼添加到你的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>
          (注意過濾器的位置:應(yīng)該在struts2的org.apache.struts2.dispatcher.FilterDispatcher過濾器之前 org.apache.struts2.dispatcher.ActionContextCleanUp過濾器之后,否則會有問題;)
          在WEB-INF下建立
          decorators.xml文件,添加如下代碼:
          <?xml version="1.0" encoding="utf-8"?>  
            
          <decorators defaultdir="/WEB-INF/decorators">  
                  
          <!-- 此處用來定義不需要過濾的頁面 -->  
                  
          <excludes> 
          <pattern>/login/*</pattern>
                  </excludes>        
               
          <!-- 用來定義裝飾器要過濾的頁面 -->  
              
          <decorator name="main" page="main.jsp">  
                  
          <pattern>/*</pattern>  
             
          </decorator>  
          </decorators> 
          decorators.xml有兩個主要的結(jié)點(diǎn):
                 decorator結(jié)點(diǎn)指定了模板的位置和文件名,通過pattern來指定哪些路徑引用哪個模板
                 excludes結(jié)點(diǎn)則指定了哪些路徑的請求不使用任何模板
          上面代碼,凡是以/login/開頭的請求路徑一律不使用模板;
          decorators結(jié)點(diǎn)的defaultdir屬性指定了模板文件存放的目錄;



          在WEB-INF下建立decorators文件夾,在下面建立main.jsp,代碼如下:
              <%@ page language="java" contentType="text/html; charset=utf-8"  
                  pageEncoding
          ="utf-8"%>  
              
          <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>  
              
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 01 Transitional//EN" "http://www.worg/TR/html4/loose.dtd">  
              
          <html>  
               
          <!-- 第一個裝飾頁面 -->  
                  
          <head>  
               
          <!-- 從被裝飾頁面獲取title標(biāo)簽內(nèi)容,并設(shè)置默認(rèn)值-->  
               
          <title><decorator:title default="默認(rèn)title"/></title>  
          <!-- 從被裝飾頁面獲取head標(biāo)簽內(nèi)容 -->  
           
          <decorator:head/>  
          </head>  

          <body>  
             
          <h2>SiteMesh裝飾header</h2>  
            
          <hr />  
          <!-- 從被裝飾頁面獲取body標(biāo)簽內(nèi)容 -->  
           
          <decorator:body />  
           
          <hr />  
           
          <h2>SiteMesh裝飾footer</h2>  
           
          </body>  
          </html> 
          這就是個簡單的模板,頁面的頭和腳都由模板里的靜態(tài)HTML決定了,主頁面區(qū)域用的是<decorator:body />標(biāo)簽;
          也就是說凡是能進(jìn)入過濾器的請求生成的頁面都會默認(rèn)加上模板上的頭和腳,然后頁面自身的內(nèi)容將自動放到<decorator:body />標(biāo)簽所在位置;

          <decorator:title default="
          默認(rèn)title" />:讀取被裝飾頁面的標(biāo)題,并給出了默認(rèn)標(biāo)題。
          <decorator:head />:讀取被裝飾頁面的<head>中的內(nèi)容;
          <decorator:body />:讀取被裝飾頁面的<body>中的內(nèi)容;



          好了,下載可以建立頁面了,看看你的頁面是不是被sitemesh改變了呢?(建立index.jsp)瀏覽
              <%@ page language="java" contentType="text/html; charset=utf-8"  
                  pageEncoding
          ="utf-8"%>  
              
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 01 Transitional//EN" "http://wwwworg/TR/html4/loosedtd">  
              
          <html>  
               
          <!-- 第一個被裝飾(目標(biāo))頁面  -->  
               
          <head>  
               
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
               
          <title>被裝飾(目標(biāo))頁面title</title>  
               
          </head>  
                
              
          <body>  
              
          <h4>被裝飾(目標(biāo))頁面body標(biāo)簽內(nèi)內(nèi)容。</h4>  
              
          <h3>使用SiteMesh的好處?</h3>  
              
          <ul>  
                  
          <li>  
                   
          <li>很多很多</li>  
                  
          </ul>  
              
          </body>  
             
          </html> 

          posted on 2008-12-10 20:14 草原上的駱駝 閱讀(611) 評論(0)  編輯  收藏 所屬分類: JAVA框架

          主站蜘蛛池模板: 新巴尔虎左旗| 日土县| 海南省| 景泰县| 昌吉市| 济源市| 皮山县| 巩义市| 鄂尔多斯市| 莎车县| 南阳市| 雷州市| 江安县| 湟源县| 平顺县| 黄浦区| 鸡东县| 昌图县| 东乌珠穆沁旗| 长宁区| 玉树县| 澄江县| 通山县| 沈阳市| 汽车| 广元市| 怀远县| 巴彦淖尔市| 邢台市| 海晏县| 五常市| 沙湾县| 武汉市| 措勤县| 闽清县| 宜阳县| 马尔康县| 定远县| 漳州市| 湖北省| 凤凰县|