SiteMesh使用示例 -装饰模式


转载地址:http://blog.csdn.net/liusong0605/article/details/9773723

一、SiteMesh介绍

        SiteMesh是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。[来自百度百科]

       通俗的理解就是,SiteMesh把页面中变化的和不变的分离开来,用不变的去装饰各种变化的内容。从而使页面具有统一的布局,而且方便页面的管理。不变的页面称之为装饰页面,内容变化的页面称之为被装饰页面。
      装饰页面一般包括:页面标题、头部、底部、主体以及公共的css、js
      被装饰页面只需要写它自己需要的内容就可以了。

      根据页面需要,装饰页面可以有多个,被装饰页面也可以有不被装饰而保持自己风格的选择,这只需要在配置文件中配置一下就可以了。
      siteMesh3.0运行环境:servlet、  jdk

二、SiteMesh使用

        SiteMesh的使用也非常简单。这里使用的是sitemesh3.0。整个项目结构如图:

         

      1. 下载sitemesh3.0 ,将disk文件夹下的sitemesh-3.0-alpha-2.jar放到lib目录下。

      2. 建立装饰页面,装饰页可以是静态文件,也可以是动态文件,这里用jsp来测试

 (1)带有菜单栏的装饰页面:decorator.jsp

  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3. <sitemesh:write property='head'/>  
  4. <style type='text/css'>  
  5. .mainBody {    
  6.     padding: 10px;    
  7.     border: 1px solid #555555;    
  8. }   
  9. .conbgbtm {  
  10.     width:100%;  
  11.     min-height:400px;  
  12.     height:auto;  
  13.     overflow:hidden;  
  14.     zoom:1;  
  15. }  
  16. </style>  
  17. </head>  
  18. <body>  
  19.     <!--头部  -->  
  20.     <div align="center">  
  21.         <h1 >头部信息:   
  22.             <sitemesh:write property='title' />   
  23.         </h1>    
  24.     </div>  
  25.     <hr>     
  26.      
  27.     <!--左侧菜单栏  -->  
  28.     <div class="conbgbtm">  
  29.         <div class="leftbox">  
  30.             <ul>  
  31.                 <li><a href="#">菜单1</a></li>  
  32.                 <li><a href="#">菜单2</a></li>  
  33.                 <li><a href="#">菜单3</a></li>  
  34.             </ul>  
  35.         </div>  
  36.         <sitemesh:write property='body'></sitemesh:write>  
  37.     </div>  
  38.     <hr>  
  39.               
  40.     <div align="center">  
  41.         <span>Copyright © 2012-2013 廊坊信息技术提高班 版权所有</span>  
  42.     </div>  
  43.       
  44. </body>  
  45. </html>  

 (2)不带菜单栏的装饰页面:registerDecorator.jsp

  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3. <sitemesh:write property='head'/>  
  4. <style type='text/css'>  
  5. .mainBody {    
  6.     padding: 10px;    
  7.     border: 1px solid #555555;    
  8. }   
  9. .conbgbtm {  
  10.     width:100%;  
  11.     min-height:400px;  
  12.     height:auto;  
  13.     overflow:hidden;  
  14.     zoom:1;  
  15. }  
  16. </style>  
  17. </head>  
  18. <body>  
  19.     <!--头部  -->  
  20.     <div align="center">  
  21.         <h1 >头部信息:   
  22.             <sitemesh:write property='title' />   
  23.         </h1>    
  24.     </div>  
  25.     <hr>     
  26.      
  27.     <!--主体内容  -->  
  28.     <div class="conbgbtm">  
  29.         <sitemesh:write property='body'></sitemesh:write>  
  30.     </div>  
  31.     <hr>  
  32.       
  33.     <!--底部  -->         
  34.     <div align="center">  
  35.         <span>Copyright © 2012-2013 廊坊信息技术提高班 版权所有</span>  
  36.     </div>  
  37.       
  38. </body>  
  39. </html>  


      3. 建立被装饰页

(1)index首页

  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
  4. <title>SiteMesh3   title</title>  
  5. </head>  
  6. <body>  
  7.     <span>sitemesh3 body</span>  
  8. </body>  
  9. </html>  

 (2)logon.jsp、register.jsp页面

  1. <html>  
  2. <head>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
  4. <title></title>  
  5. </head>  
  6. <body>  
  7.     <div align="center">  
  8.         <p>用户名:<input type="text" id="userName" ></p>  
  9.         <p>密码:    <input type="text" id="pwd"></p>  
  10.         <p>验证码:<input type="text" id="validate"></p>  
  11.     </div>  
  12. </body>  
  13. </html>  


 

      4. web-inf/lib下建立Sitemesh3.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <sitemesh>  
  3.     <!--register页面的装饰页面为没有菜单栏 的registerDecorator.jsp -->  
  4.    <mapping>  
  5.           <path>/register.jsp</path>  
  6.         <decorator>/decorator/registerDecorator.jsp</decorator>  
  7.    </mapping>  
  8.    
  9.    <!--带有菜单栏的装饰页面  -->  
  10.    <mapping decorator="/decorator/decorator.jsp"/>  
  11.    
  12.    <!--登录页面不被装饰。没有配置为true的页面,表示使用装饰页面,例如index.jsp -->  
  13.    <mapping path="/logon.jsp" exclue="true"/>  
  14. </sitemesh>  

      5. Web.xml里加载sitemesh模板系统

  1. <!-- 加载sitemesh模板系统 -->  
  2. <filter>  
  3.     <filter-name>sitemesh</filter-name>  
  4.     <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter</filter-class>  
  5. </filter>  
  6.   
  7. <filter-mapping>  
  8.     <filter-name>sitemesh</filter-name>  
  9.     <url-pattern>/*</url-pattern>  
  10. </filter-mapping>  


运行效果:

登录页面不被装饰页面装饰

首页面经过装饰后显示头部、底部、菜单栏等信息

注册页面被只有头部和尾部信息的页面装饰:


猜你喜欢

转载自blog.csdn.net/qi923701/article/details/77703447