免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SiteMesh使用

什么是SiteMesh?
    SiteMesh是OpenSymphony下的一個項目,是基于PageFilter,Servlet過濾器的通用組件.



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



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



SiteMesh使用:
    本事例使用基于Struts2來進行編寫
    1.首先在我們的項目當中添加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,該文件描述各個裝飾器頁面和如何過濾頁面
Xml代碼  
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3.   
  4. <!-- defaultdir 屬性為通用頁面存放的路徑 -->  
  5. <decorators defaultdir="/WEB-INF/content/base">  
  6.       
  7.     <!-- excludes 為哪些頁面不需要進行裝飾,這通常結(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 為要過濾哪些頁面? * 代表所有頁面都進行過濾-->  
  16.         <pattern>*</pattern>  
  17.     </decorator>  
  18.       
  19.     <decorator name="printable" page="printable.jsp"/>  
  20. </decorators>  

     以下為main.jsp代碼
Html代碼  
  1. <!--   
  2.     當使用了SiteMesh后,本頁面main.jsp就會變成所有頁面的模板  
  3.     我們可以在這個頁面中引入各種的css,js和其他的頁面,  
  4.     亦可以在這里使用jsp的include標簽引入其他的頁面,  
  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后,更集中的管理了各個頁面的標簽,css,js的引入,雖然在實際開發(fā)當中一般會首先固定各個技術(shù)使用的版本,但由于需求的變更和技術(shù)的更新發(fā)展,有時候不得不更新所使用的版本,大量分散在不同頁面的引入標簽修改起來簡直就是噩夢般的事情,而且SiteMesh的簡單易用,我們何樂而不為的去使用SiteMesh呢?

       
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用SiteMesh簡化網(wǎng)頁布局
SiteMesh:一個優(yōu)于Apache Tiles的Web頁面布局、裝飾框架 - yjhm...
SSH2整合SiteMesh項目
sitemesh性能測試結(jié)果比較驚艷(已經(jīng)補上新的對比測試結(jié)果)
Appfuse1.9.3 for springMVC源碼解讀(1)-- 從web.xml
struts 標簽的引入
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服