<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    大漠駝鈴

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

    SiteMesh學習筆記1(一個優于Apache Tiles的Web頁面布局、裝飾框架)

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

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

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

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

    本文介紹sitemesh的簡單應用:

    首先下載 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>
    (注意過濾器的位置:應該在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有兩個主要的結點:
           decorator結點指定了模板的位置和文件名,通過pattern來指定哪些路徑引用哪個模板
           excludes結點則指定了哪些路徑的請求不使用任何模板
    上面代碼,凡是以/login/開頭的請求路徑一律不使用模板;
    decorators結點的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標簽內容,并設置默認值-->  
         
    <title><decorator:title default="默認title"/></title>  
    <!-- 從被裝飾頁面獲取head標簽內容 -->  
     
    <decorator:head/>  
    </head>  

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

    <decorator:title default="
    默認title" />:讀取被裝飾頁面的標題,并給出了默認標題。
    <decorator:head />:讀取被裝飾頁面的<head>中的內容;
    <decorator:body />:讀取被裝飾頁面的<body>中的內容;



    好了,下載可以建立頁面了,看看你的頁面是不是被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>  
         
    <!-- 第一個被裝飾(目標)頁面  -->  
         
    <head>  
         
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
         
    <title>被裝飾(目標)頁面title</title>  
         
    </head>  
          
        
    <body>  
        
    <h4>被裝飾(目標)頁面body標簽內內容。</h4>  
        
    <h3>使用SiteMesh的好處?</h3>  
        
    <ul>  
            
    <li>  
             
    <li>很多很多</li>  
            
    </ul>  
        
    </body>  
       
    </html> 

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

    主站蜘蛛池模板: 一区二区亚洲精品精华液| 亚洲成人免费在线| 亚洲人成人77777网站不卡| 亚洲无码黄色网址| 日韩午夜免费视频| 69堂人成无码免费视频果冻传媒| 你懂的免费在线观看| 特级毛片全部免费播放a一级| 91丁香亚洲综合社区| 亚洲黄色中文字幕| 亚洲AV无码1区2区久久| 国产a v无码专区亚洲av | 亚洲gv猛男gv无码男同短文| 免费国产成人午夜私人影视| 人妻视频一区二区三区免费| 亚洲免费视频观看| 8888四色奇米在线观看免费看| 三年片免费观看大全国语| 美女视频黄视大全视频免费的| 亚洲日本一线产区和二线| 亚洲国产成+人+综合| 91亚洲精品自在在线观看| 久久久国产精品亚洲一区| 亚洲卡一卡2卡三卡4卡无卡三 | 中文在线日本免费永久18近| 男人免费视频一区二区在线观看| 久久亚洲AV成人无码国产电影| 亚洲人成自拍网站在线观看| 亚洲小说图区综合在线| 91丁香亚洲综合社区| 亚洲最大的成人网| 亚洲成a∨人片在无码2023| 久久亚洲精品无码gv| 国内成人精品亚洲日本语音 | 亚洲?v无码国产在丝袜线观看| 国产精品va无码免费麻豆| 日本久久久免费高清| 免费久久精品国产片香蕉| 又色又污又黄无遮挡的免费视| 免费a级黄色毛片| 国产日产亚洲系列最新|