DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計

          積分與排名

          好友之家

          最新評論

          優(yōu)雅的解決web布局的問題 -- sitemesh的使用

          webwork的開發(fā)團隊opensymphony提供了一種優(yōu)雅的解決頁面布局的方法sitemesh。
          sitemesh應(yīng)用Decorator模式,用filter截取request和response,把頁面組件head,content,banner
          結(jié)合為一個完整的視圖。通常我們都是用include標簽在每個jsp頁面中來不斷的包含各種header,
          stylesheet, scripts and footer,現(xiàn)在,在sitemesh的幫助下,我們可以開心的刪掉他們了

          下邊是創(chuàng)建一個簡單實例的步驟:
          1,新建一個標準的web工程叫sitemesh
          在WebRoot下新建一個index.jsp,內(nèi)容如下

          1 <% @ page contentType = " text/html; charset=utf-8 " %>
          2 this  is index.jsp.
          3 it ' s a simple page 

          接著在webRoot下新建幾個目錄
          style2
          login
          shared
          在login下建立目錄style3
          然後把index.jsp分別復(fù)制到style2,login/style3,shared下
          現(xiàn)在訪問下邊的鏈接:
          http://localhost:8080/sitemesh/index.jsp
          http://localhost:8080/sitemesh/style2/index.jsp
          http://localhost:8080/sitemesh/login/style3/index.jsp
          http://localhost:8080/sitemesh/shared/index.jsp
          得到的結(jié)果是一樣的,那我們?nèi)绾巫屵@四個相同的index.jsp有不同的樣式呢。除了每個里邊加入include
          還有個解決辦法,就是sitemesh
          2,在opensymphony.sourceforge.net下載sitemesh.jar ,sitemesh-decorator.tld,sitemesh-page.tld
          三個文件。
          復(fù)制sitemesh.jar到WEB-INF/lib下,
          復(fù)制sitemesh-decorator.tld,sitemesh-page.tld到WEB-INF下
          把下邊這部分加入web.xml
          ------------------------------------------------------------------------------
          <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>

          <taglib>
            <taglib-uri>sitemesh-decorator</taglib-uri>
            <taglib-location>/WEB-INF/sitemesh-decorator.tld</taglib-location>
          </taglib>

          <taglib>
            <taglib-uri>sitemesh-page</taglib-uri>
            <taglib-location>/WEB-INF/sitemesh-page.tld</taglib-location>
          </taglib>
          --------------------------------------------------------------------------------
          在WEB-INF下建立一個decorators.xml,內(nèi)容如下
          excludes代表不使用的部分
          其它三個是匹配url,使用style
          --------------------------------------------------------------------------
          <decorators defaultdir="/decorators">
              <excludes>
                  <pattern>/shared/*</pattern>   
              </excludes>
              <decorator name="style1" page="style1.jsp">
                  <pattern>/*</pattern>
              </decorator>
              <decorator name="style2" page="style2.jsp">
                  <pattern>/style2/*</pattern>
              </decorator>
             
              <decorator name="style3" page="style3.jsp">
                  <pattern>/*/style3/*</pattern>
              </decorator>
          </decorators>
          --------------------------------------------------------------------------
          在WebRoot下新建一個目錄decorators
          然後在下邊建立三個jsp文件,內(nèi)容如下
          ------------------------------------------------------------------
          <%@ page contentType="text/html; charset=utf-8"%>
          <%@ taglib uri="sitemesh-decorator" prefix="decorator" %>
          <html>
            <head>
              <title><decorator:title default="裝飾器頁面..." /></title>
              <decorator:head />
            </head>
            <body>
              <p><font color="red">this is style2's header</font></p>
              <hr>
              <decorator:body />
              <hr>
              <p><font color="red">this is style1's footer</font></p>
            </body>
          </html>
          ------------------------------------------------------------------

          <%@ page contentType="text/html; charset=utf-8"%>
          <%@ taglib uri="sitemesh-decorator" prefix="decorator" %>

          <html>
            <head>
              <title><decorator:title default="裝飾器頁面..." /></title>
              <decorator:head />
            </head>
            <body>
              <p><font color="green">this is style2's header</font></p>
              <hr>
              <decorator:body />
              <hr>
              <p><font color="green">this is style2's footer</font></p>
            </body>
          </html>

          ------------------------------------------------------------------
          <%@ page contentType="text/html; charset=utf-8"%>
          <%@ taglib uri="sitemesh-decorator" prefix="decorator" %>

          <html>
            <head>
              <title><decorator:title default="裝飾器頁面..." /></title>
              <decorator:head />
            </head>
            <body>
              <p><font color="blue">this is style3's header</font></p>
              <hr>
              <decorator:body />
              <hr>
              <p><font color="blue">this is style3's footer</font></p>
            </body>
          </html>
          ------------------------------------------------------------------
          再次訪問
          http://localhost:8080/sitemesh/index.jsp
          http://localhost:8080/sitemesh/style2/index.jsp
          http://localhost:8080/sitemesh/login/style3/index.jsp
          http://localhost:8080/sitemesh/shared/index.jsp
          看到變化了吧。這只是個簡單的展示,仔細思考一下你的需求,你能作出更好的布局方式。
          sitemesh真不錯。重要是學習簡單20分種就搞定了

          posted on 2006-12-05 17:17 dreamstone 閱讀(4036) 評論(1)  編輯  收藏 所屬分類: web框架

          評論

          # re: 優(yōu)雅的解決web布局的問題 -- sitemesh的使用 2006-12-06 10:26 loocky

          sitemesh的編碼有些問題,我在移動的一個項目中用過,SITEmesh 主要用FILTER來DECORATE頁面,其實很不錯的,避免了FRAME,很不錯的  回復(fù)  更多評論   

          主站蜘蛛池模板: 永吉县| 民和| 崇文区| 博兴县| 辉县市| 南陵县| 扎鲁特旗| 巫溪县| 广丰县| 康马县| 洮南市| 荆州市| 湄潭县| 特克斯县| 图们市| 建瓯市| 同江市| 霞浦县| 彭山县| 大埔县| 巢湖市| 集贤县| 延寿县| 靖远县| 青铜峡市| 西乡县| 鄱阳县| 静海县| 郴州市| 南宫市| 巴东县| 沛县| 威信县| 抚远县| 古蔺县| 深水埗区| 逊克县| 吴川市| 贵港市| 盐源县| 梓潼县|