乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      SiteMesh使用

       凌氏 2014-05-09

      什么是SiteMesh?
          SiteMesh是OpenSymphony下的一個(gè)項(xiàng)目,是基于PageFilter,Servlet過濾器的通用組件.



      SiteMesh為我們帶來什么?
          我們可以想像一下,當(dāng)我們的應(yīng)用程序有大量的頁面時(shí)候,為每個(gè)頁面include我們各種各樣的標(biāo)簽庫,引入的js和css等樣式,這將會成為重復(fù)性的工作,而且只要其中一個(gè)標(biāo)簽庫進(jìn)行了更新升級,所有頁面的標(biāo)簽聲明都需要重新更改,這項(xiàng)工作無疑是恐怖而且毫無技術(shù)含量的,SiteMesh就是為了幫助我們解決這個(gè)問題,把共有的標(biāo)簽例如js,css,struts-tags等重復(fù)性的聲明抽象到一個(gè)頁面當(dāng)中,從而實(shí)現(xiàn)集中處理,增加維護(hù)性和解除頁面間的耦合.



      SiteMesh原理:
          SiteMesh應(yīng)用了Decorator模式,用filter截取request和response,把頁面組件head,content,banner結(jié)合為一個(gè)完整的視圖。通常我們都是用include標(biāo)簽在每個(gè)jsp頁面中來不斷的包含各種header, stylesheet, scripts and footer,現(xiàn)在,在SiteMesh的幫助下,我們可以不再編寫那些重復(fù)性的代碼,從而集中在一個(gè)地方進(jìn)行管理.容器接收到頁面請求時(shí),會把請求傳遞給PageFilter,PageFilter收集應(yīng)用程序的響應(yīng)細(xì)節(jié),生成自定義的響應(yīng)對象,然后連同請求一起傳遞給web應(yīng)用程序.web應(yīng)用程序把響應(yīng)資源寫入到自定義響應(yīng)對象里,再返回給PageFilter.



      SiteMesh使用:
          本事例使用基于Struts2來進(jìn)行編寫
          1.首先在我們的項(xiàng)目當(dāng)中添加Maven的依賴

      Xml代碼  收藏代碼
      1. <dependency>  
      2.     <groupId>opensymphony</groupId>  
      3.     <artifactId>sitemesh</artifactId>  
      4.     <version>2.4.2</version>  
      5.     <type>jar</type>  
      6.     <scope>compile</scope>  
      7. </dependency>  
      8.   
      9. <dependency>  
      10.     <groupId>org.apache.struts</groupId>  
      11.     <artifactId>struts2-sitemesh-plugin</artifactId>  
      12.     <version>2.2.3</version>  
      13.     <type>jar</type>  
      14.     <scope>compile</scope>  
      15. </dependency>  


          2.在web.xml文件中增加如下配置
      Xml代碼  收藏代碼
      1. <filter>  
      2.     <filter-name>sitemesh</filter-name>  
      3.     <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>  
      4. </filter>  
      5.       
      6. <filter-mapping>  
      7.     <filter-name>sitemesh</filter-name>  
      8.     <url-pattern>*.action</url-pattern>  
      9.     <dispatcher>REQUEST</dispatcher>  
      10.     <dispatcher>FORWARD</dispatcher>  
      11.     <dispatcher>INCLUDE</dispatcher>  
      12. </filter-mapping>  


          3.在WEB-INF建立decorators.xml,該文件描述各個(gè)裝飾器頁面和如何過濾頁面
      Xml代碼  收藏代碼
      1. <?xml version="1.0" encoding="UTF-8"?>  
      2.   
      3.   
      4. <!-- defaultdir 屬性為通用頁面存放的路徑 -->  
      5. <decorators defaultdir="/WEB-INF/content/base">  
      6.       
      7.     <!-- excludes 為哪些頁面不需要進(jìn)行裝飾,這通常結(jié)合popup來使用 -->  
      8.     <excludes>  
      9.         <pattern>*no-decorate*</pattern>  
      10.         <pattern>/login*</pattern>  
      11.     </excludes>  
      12.       
      13.     <!-- decorator為指定裝飾頁面的名稱和路徑 -->  
      14.     <decorator name="main" page="main.jsp">  
      15.         <!-- pattern 為要過濾哪些頁面? * 代表所有頁面都進(jìn)行過濾-->  
      16.         <pattern>*</pattern>  
      17.     </decorator>  
      18.       
      19.     <decorator name="printable" page="printable.jsp"/>  
      20. </decorators>  

           以下為main.jsp代碼
      Html代碼  收藏代碼
      1. <!--   
      2.     當(dāng)使用了SiteMesh后,本頁面main.jsp就會變成所有頁面的模板  
      3.     我們可以在這個(gè)頁面中引入各種的css,js和其他的頁面,  
      4.     亦可以在這里使用jsp的include標(biāo)簽引入其他的頁面,  
      5.     更甚者可以在這里設(shè)定全局的js,例如jQuery的$.(document).ajaxStart(function(){})  
      6.  -->  
      7. <html>  
      8. <head>  
      9.     <!-- decorator:title可以將被過濾的頁面的title填充到這里 -->  
      10.     <title><decorator:title/></title>  
      11.     <!-- decorator:head 可以將被過濾的頁面中的head填充到這里 -->  
      12.     <decorator:head />  
      13. </head>  
      14. <body>  
      15. <div class="content">  
      16.     <!-- decorator:head 可以將被過濾的頁面中的body填充到這里 -->  
      17.     <decorator:body />   
      18. </div>  


      總結(jié):
          使用了SiteMesh后,更集中的管理了各個(gè)頁面的標(biāo)簽,css,js的引入,雖然在實(shí)際開發(fā)當(dāng)中一般會首先固定各個(gè)技術(shù)使用的版本,但由于需求的變更和技術(shù)的更新發(fā)展,有時(shí)候不得不更新所使用的版本,大量分散在不同頁面的引入標(biāo)簽修改起來簡直就是噩夢般的事情,而且SiteMesh的簡單易用,我們何樂而不為的去使用SiteMesh呢?

             

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多