`
还有也许
  • 浏览: 169241 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

sitemash实例与介绍

阅读更多

在一个偶然的机会我发现了原来我做的一个项目以前是的前台界面应用了sitemash,而且听说很不错,就按耐不住了,在网上搜了点儿帖写了一个例子。以备后用。

 

一、sitemash简介:

 

      SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容,使得它的内容也符合你的页面结构的要求。甚至于它能将HTML文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。所有的这些,都是GOF的Decorator模式的最生动的实现。尽管它是由java语言来实现的,但它能与其他Web应用很好地集成。

     sitemesh的官方网站是:http://www.opensymphony.com/sitemesh/index.html

     sitemesh的下载地址是:http://www.opensymphony.com/sitemesh/download.action

 

二、运行原理:

 

SiteMesh框架是OpenSymphony团队开发的一个非常优秀的页面装饰器框架,它通过对用户请求进行过滤,并对服务器向客户端响应也进行过滤,然后给原始页面加入一定的装饰(header,footer等),然后把结果返回给客户端。通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需再使用include指令来包含装饰效果,目标页与装饰页完全分离,如果所有页面使用相同的装饰器,可以是整个Web应用具有统一的风格。

 

三、用实例说话:

     我用的是sitemesh 2.4的版本。

     1、为你的项目/WEB-INF/lib下添加一个sitemesh-2.4.1.jar

     2、在/WEB-INF/新建一个decorators.xml文件,文件内容如下:

    

<?xml version="1.0" encoding="utf-8"?>   
<decorators defaultdir="/decorators">       
   <!-- 此处用来定义不需要过滤的页面 -->       
   <excludes>       
   </excludes>       
   <!-- 用来定义装饰器要过滤的页面 -->       
   <decorator name="main" page="main.jsp">           
   <pattern>/*</pattern>       
   </decorator>   
</decorators>

     各个标签的作用:

   

  • defaultdir: 包含装饰器页面的目录
  • page : 页面文件名
  • name : 别名
  • role : 角色,用于安全
  • webapp : 可以另外指定此文件存放目录
  • Patterns : 匹配的路径,可以用*,那些被访问的页面需要被装饰。
  •  

        3、在[web-app]/WEB-INF/web.xml添加以下内容:

        

    <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>

     

       4、在[web-app]下创建一个decorators文件夹,在该文件下再创建一个装饰页面main.jsp,包含以下内容:

       

    <%@ page contentType="text/html; charset=utf-8"%>
    <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%> 
    <html>
          <head>
              <title><decorator:title default="装饰器页面..." /></title>
              <decorator:head />
          </head>
         <body>
            sitemesh的例子<hr>
            <decorator:body />
            <hr>http://yanzhenwei.iteye.com
        </body>
    </html>

     

    这就是最主要的页面了,每一个被装饰的页面都是被这个装饰器装饰之后才返回你看到的那个页面的。所以可以把那些公共的js、css等修饰放到该处,其他界面就不用再引入了。

       5、在[web-app]下创建被装饰页面index.jsp,包含以下内容:

       

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    
    <%@ page contentType="text/html; charset=utf-8"%>
    <html>
         <head>
           <title>Agent Test</title>
         </head>
         <body>
           <p>本页只有一句,就是本句.</p>
         </body>
    </html>

     

     

       下面是需要的jar包

    2
    1
    分享到:
    评论
    4 楼 还有也许 2011-09-10  
    直直走 写道
    当年我传授于你的

    好自恋啊
    3 楼 直直走 2011-09-07  
    当年我传授于你的
    2 楼 还有也许 2010-08-03  
    ligeqq 写道
    写的不错。
    不过
    web.xml貌似有误,
    忘了加 
    <filter> 

    哦,笔误,谢谢您的指点。
    1 楼 ligeqq 2010-08-02  
    写的不错。
    不过
    web.xml貌似有误,
    忘了加 
    <filter> 

    相关推荐

      基于shiro+struts2+hibernate+Spring+sitemash框架集合的毕业设计管理系统

      在本系统中,Spring作为核心容器,管理各个组件的生命周期,同时也作为数据访问抽象层,通过Spring JDBC或MyBatis与Hibernate结合,进一步优化数据访问。 【Sitemesh框架】Sitemesh是一个网页布局和装饰框架,用于...

      SSH英语学习网站

      SSH是三个Java开发框架的...通过这个实训项目,你可以深入理解SSH框架的协同工作,以及如何将它们与其他技术如Ajax和Sitemash集成,同时掌握文件上传下载的实际操作,这对于提升你的Java Web开发技能是非常有价值的。

      白色简洁的艺术展示网页模板下载.zip

      白色简洁的艺术展示网页模板下载.zip

      电商平台开发需求文档.doc

      电商平台开发需求文档.doc

      STM32F030单片机控制LED灯.zip

      1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用KEIL 标准库开发,当前在STM32F030C8T6运行,如果是STM32F030其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、编译时请注意提示,请选择合适的编译器版本。

      数电期末练习题.doc

      数电期末练习题.doc

      交易流水证明_用于材料证明_20241225_174557.zip

      交易流水证明_用于材料证明_20241225_174557.zip

      计算机网络期末复习(第八版)谢希仁

      计算机网络期末复习(第八版)谢希仁

      基于微信小程序的汽车销售系统的设计与实现springboot.zip

      汽车销售系统使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理汽车销售系统信息,查看汽车销售系统信息,管理汽车销售系统。 用户信息管理页面,此页面提供给管理员的功能有:用户信息的查询管理,可以删除用户信息、修改用户信息、新增用户信息,还进行了对用户名称的模糊查询的条件。 汽车信息管理页面,此页面提供给管理员的功能有:查看已发布的汽车信息数据,修改汽车信息,汽车信息作废,即可删除,还进行了对汽车信息名称的模糊查询 汽车信息信息的类型查询等等一些条件。 汽车类型管理页面,此页面提供给管理员的功能有:根据汽车类型进行条件查询,还可以对汽车类型进行新增、修改、查询操作等等。

      VB+ACCESS网络计时管理系统设计(源代码+系统)(2024gv).7z

      1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于计算机科学与技术等相关专业,更为适合;

      电视盒子的远程输入法应用,可跨屏远程输入和跨屏远程控制盒子.7z

      电视盒子的远程输入法应用,可跨屏远程输入和跨屏远程控制盒子.7z

      白色大气的旅游度假酒店企业网站模板下载.zip

      白色大气的旅游度假酒店企业网站模板下载.zip

      【信息融合】基于matlab多维卡尔曼滤波器传感器信息融合(含GPS)【含Matlab源码 9980期】含报告.zip

      Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

      (177453248)用python代 码放烟花.zip

      标题中的“用python代码放烟花”表明我们将讨论如何使用Python编程语言来模拟烟花绽放的效果。在Python编程中,实现这样的视觉效果通常涉及到图形用户界面(GUI)或者更具体地说是图形渲染。描述中的内容与标题一致,暗示我们将深入探讨一个使用Python编写的烟花模拟程序。 `main.py`是这个项目的核心文件,它很可能是整个烟花秀的主入口点。在这个文件中,开发者可能定义了程序的主循环,以及调用其他模块如`particle.py`的代码。`particle.py`可能包含了粒子系统的设计,因为烟花效果通常是通过模拟无数粒子的运动来实现的。粒子系统是一种常见的计算机图形学技术,用于模拟大量独立对象(在这里是烟花)的行为。 在`particle.py`中,我们可以预期找到类或函数来定义烟花粒子的属性,比如位置、速度、颜色、生命周期等。这些粒子可能会随着时间的推移而改变状态,例如从升空到爆炸,再到散开形成绚丽的图案。开发者可能使用了物理学原理,如重力和随机力,来模拟粒子的运动。 `.gitignore`文件是一个配置文件,告诉Git版本控制系统忽略特定的文件或目录。在这个项目中,它可

      白色创意风格的图片浏览源码下载.zip

      白色创意风格的图片浏览源码下载.zip

      白色大气风格的设计公司CSS3单页模板.zip

      白色大气风格的设计公司CSS3单页模板.zip

      Chapter 03 复合数据类型-1(资源)

      Chapter 03 复合数据类型-1(资源)项目中编写代码部分的源代码示例,包括石头剪刀布程序和用户登录以及增删改查程序

      白色大气风格的电子邮件订阅模板下载.zip

      白色大气风格的电子邮件订阅模板下载.zip

      IMG_20241225_230314.jpg

      IMG_20241225_230314.jpg

    Global site tag (gtag.js) - Google Analytics