SiteMesh介绍

PyWxDump实战:解密微信PC端本地数据库,实现聊天记录备份与分析 数据加密是保护敏感信息(如聊天记录)的核心技术,它通过特定算法将明文转换为密文,确保数据在存储和传输过程中的机密性。SQLCipher作为SQLite的加密扩展,采用AES-256算法对数据库文件进行页级加密,广泛应用于移动端和桌面端应用的数据保护。其技术价值在于,在保障用户隐私的前提下,为合规的数据备份、归档与分析提供了底层支持。在数据恢复、司法取证或合规审计等场景中,获取并解析此类加密数据是关键步骤。PyWxDump正是针对微信PC端本地SQLCipher加密数据库设计的工具,它通过逆向工程分析内存结构 阅读详情
一、SiteMesh项目简介 

      OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration) 
的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。 

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

       官方:http://www.opensymphony.com/sitemesh/ 

       下载地址:http://www.opensymphony.com/sitemesh/download.action 目前的最新版本是Version 2.3; 

二、为什么要使用SiteMesh? 

    我们的团队开发J2EE应用的时候,经常会碰到一个比较头疼的问题: 

         由于Web页面是由不同的人所开发,所以开发出来的界面通常是千奇百怪,通常让项目管理人员苦笑不得。 

     而实际上,任何一个项目都会要求界面的统一风格和美观,既然风格统一,那就说明UI层肯定有很多可以抽出来 
共用的静态或动态部分;如何整合这些通用的静态或动态UI呢?Apache Tiles框架站了出来很好的解决了这一问题, 
再加上他与struts的完美集成,导致大小项目都把他作为UI层的首选框架, 

但是: 

   Tiles确实有着它很多的不足之处,下文我会介绍,本文想说的是,除了Apache Tiles框架,其实我们还有更好的解 
决方案,那就是:SiteMesh; 

本文 
   
   介绍了一个基于Web页面的布局、装饰以及应用整合的框架Sitemesh,它能帮助你为你的应用创建一致的外观, 
很好的取代Apache Tiles; 

三、SiteMesh VS Apache Tiles 

     用过struts的朋友应该对Apache Tiles的不会陌生,我曾经有一篇文章介绍过struts中tiles框架的组合与继承, 
现在怎么看怎么觉得复杂; 
      
       从使用角度来看,Tiles似乎是Sitemesh标签<page:applyDecorator>的一个翻版。其实sitemesh最强的 
一个特性是sitemesh将decorator模式用在过滤器上。任何需要被装饰的页面都不知道它要被谁装饰,所以它就 
可以用来装璜来自php、asp、CGI等产生的页面了。你可以定义若干个装饰器,根据参数动态地选择装饰器, 
产生动态的外观以满足你的需求。它也有一套功能强大的属性体系,它能帮助你构建功能强大而灵活的装饰器。 
相比较而言,在这方面Tiles就逊色许多。 

       个人觉得在团队开发里面,Apache Tiles框架会导致所有人不仅仅要了解并且清楚Apache Tiles的存在, 
并且要特别熟悉每一个Tiles layout模板的作用,否则就可能出现用错模板的情况;除此之外,每个人涉及到 
的所有WEB页面都需要去配置文件里面逐个配置,不仅麻烦出错的几率还高; 
       而以上所有的不足都是SiteMesh所不存在的; 


四、SiteMesh的基本原理 

      一个请求到服务器后,如果该请求需要sitemesh装饰,服务器先解释被请求的资源,然后根据配置文件 
获得用于该请求的装饰器,最后用装饰器装饰被请求资源,将结果一同返回给客户端浏览器。 

五、如何使用SiteMesh 

   这里以struts2+spring2+hibernate3构架的系统为例 
     1、下载SiteMesh 
          下载地址:http://www.opensymphony.com/sitemesh/download.action 目前的最新版本是Version 2.3; 
      
        2、在工程中引入SiteMesh的必要jar包,和struts2-sitemesh-plugin-2.0.8.jar; 
      
       3、修改你的web.xml,在里面加入sitemesh的过滤器,示例代码如下: 
         
<!-- sitemesh配置 --> 
    <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> 
      

         注意过滤器的位置:应该在struts2的org.apache.struts2.dispatcher.FilterDispatcher过滤器之前org.apache.struts2.dispatcher.ActionContextCleanUp过滤器之后,否则会有问题; 

       4、在下载的SiteMesh包中找到sitemesh.xml,(/sitemesh-2.3/src/example-webapp/WEB-INF目录下就有) 

         将其拷贝到/WEB-INF目录下; 

       5、在sitemesh.xml文件中有一个property结点(如下),该结点指定了decorators.xml在工程中的位置,让sitemesh.xml能找到他; 
按照此路径新建decorators.xml文件,当然这个路径你可以任意改变,只要property结点的value值与其匹配就行; 


<property name="decorators-file" value="/WEB-INF/sitemesh/decorators.xml"/> 


    
      6、在WebRoot目录下新建decorators目录,并在该目录下新建一个模板jsp,根据具体项目风格编辑该模板, 
如下示例:我的模板:main.jsp 

<%@ page language="java" pageEncoding="UTF-8"%> 
<%@taglib prefix="decorator" 
     uri="http://www.opensymphony.com/sitemesh/decorator"%> 
<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<% 
     response.setHeader("Pragma", "no-cache"); 
     response.setHeader("Cache-Control", "no-cache"); 
     response.setDateHeader("Expires", 0); 
%> 
<html> 
    <head> 
        <title><decorator:title default="kangxm test" /> 
        </title> 
        <!-- 页面Head由引用模板的子页面来替换 --> 
        <decorator:head /> 
    </head> 
    <body id="page-home"> 
        <div id="page-total"> 
            <div id="page-header"> 
                <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
                    <tr> 
                        <td> 
                            <div class="topFunc"> 
                                 我的账户 
                                 | 
                                 退出 
                            </div> 
                        </td> 
                    </tr> 
                </table> 
            </div> 
        </div> 
        <!-- end header --> 
        <!--   Menu Tag begin --> 
        <div id="page-menu" style="margin-top: 8px; margin-bottom: 8px;"> 
            <div> 
                 这里放菜单 
            </div> 
        </div> 
        <!--   Menu Tag end --> 
        <div id="page-content" class="clearfix"> 
            <center> 
                <table width="100%" border="0" cellpadding="0" cellspacing="0"> 
                    <tr> 
                        <td> 
                            <decorator:body /><!-- 这里的内容由引用模板的子页面来替换 --> 
                        </td> 
                    </tr> 
                </table> 
            </center> 
        </div> 
        <!-- end content --> 
        <div id="page-footer" class="clearfix"> 

             这里放页面底部 
            <!-- end footer --> 
        </div> 
        <!-- end page --> 
    </body> 
</html> 


这就是个简单的模板,页面的头和脚都由模板里的静态HTML决定了,主页面区域用的是<decorator:body />标签; 
也就是说凡是能进入过滤器的请求生成的页面都会默认加上模板上的头和脚,然后页面自身的内容将自动放到<decorator:body />标签所在位置; 

<decorator:title default="Welcome to test sitemesh!" />:读取被装饰页面的标题,并给出了默认标题。 
<decorator:head />:读取被装饰页面的<head>中的内容; 
<decorator:body />:读取被装饰页面的<body>中的内容; 

      7、说到这里大家就要想了,那如果某个特殊的需求请求路径在过滤器的范围内,但又不想使用模板怎么办? 
你总不能这么不讲道理吧! 
         大家放心吧,SiteMesh早就考虑到这一点了,上面第5步说道的decorators.xml这个时候就起到作用了! 
        
下面是我的decorators.xml: 

<?xml version="1.0" encoding="ISO-8859-1"?> 
<decorators defaultdir="/decorators"> 
    <!-- Any urls that are excluded will never be decorated by Sitemesh --> 
    <excludes> 
        <pattern>/index.jsp*</pattern> 
          <pattern>/login/*</pattern> 
    </excludes> 
    <decorator name="main" page="main.jsp"> 
        <pattern>/*</pattern> 
    </decorator> 
</decorators> 

decorators.xml有两个主要的结点: 
       decorator结点指定了模板的位置和文件名,通过pattern来指定哪些路径引用哪个模板 
       excludes结点则指定了哪些路径的请求不使用任何模板 

如上面代码,/index.jsp和凡是以/login/开头的请求路径一律不使用模板; 

另外还有一点要注意的是:decorators结点的defaultdir属性指定了模板文件存放的目录; 

六、实战感受 

      刚刚做完一个用到sitemesh的项目,跟以前用tiles框架相比,最大的感受就是简单,系统设计阶段 
就把模板文件和sitemesh框架搭好了!哪些页面使用框架哪些不使用,全部都通过UI Demo很快就定义出来了; 
在接下来的开发中所有成员几乎感受不到sitemesh的存在,各自仅仅关心自己的模块功能实现; 

七、总结 

    使用sitemesh给我们带来的是不仅仅是页面结构问题,它的出现让我们有更多的时间去关注底层业务 
逻辑,而不是整个页面的风格和结构。它让我们摆脱了大量用include方式复用页面尴尬局面,也避免了tiles 
框架在团队开发中的复杂度,它还提供了很大的灵活性以及给我们提供了整合异构Web系统页面的一种方案
【3d打印】基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置 基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置(启庞Kp3s V1) 阅读详情

相关推荐

鸿蒙子系统解读-分布式软总线子系统初步研究(下)

鸿蒙子系统解读-分布式软总线子系统初步研究(下) 本文作者:江苏润和软件股份有限公司 郎建中 3.2. 数据传输 上一节我们看了PublishService()函数的代码实现过程。被发现端发布服务后,软总线回调发布成功的函数中,被发现端需要使用CreateSessionServer()来创建会话的服务器等待发现端的连接创建会话。下面我们就来分析CreateSessionServer()函数的实现过程。 数据传输部分的代码位于foundation/communication/services/softbus

weixin_47070198的博客 3091

SiteMesh:一个优于Apache Tiles的Web页面布局、装饰框架

一、SiteMesh项目简介       OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。       Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布...

zhjh17426的专栏 198

Nano Banana 2哪里使用?Nano Banana 2提示词合集和使用教程

收集最强的Nano Banana 2提示词合集,以及Nano Banana 2哪里使用的教程,并且有10个免费使用渠道。

qq_42927225的博客 1997

ANPC三电平拓扑:两种调制方式解析

ANPC结构是基于“I”型NPC结构(下面讲NPC如不特殊说明,均指的是“I”型结构NPC)发展出来的一种改进型。我们在讲NPC结构的时候会谈到他的一个缺点就是损耗分布不均匀,会导致温升不均衡,进而限制模块的功率输出能力。而ANPC结构由于多了两个开关管以及相应的两个中性点换流回路(如下图),可以更加灵活任意的配置开关管可以使损耗没有那么的不均衡,从而能一定程度上提高模块的输出功率。ANPC拓扑结构图以及增加的环流回路。

IOTBOT的博客 9494

Test软件:Keysight二次开发_(3).安装与配置开发环境

在开始进行Keysight软件的二次开发之前,首先需要确保您的开发环境已经正确安装和配置。本节将详细介绍如何安装和配置必要的开发工具和依赖项,以便您能够顺利进行开发工作。

2401_87715305的博客 1414

一个代替Tiles和SiteMesh的布局工具(已开源)

   项目在 [url]http://sourceforge.net/projects/jwebbox[/url]  解压后里面有个war包,扔到Tomcat6.0目录下就可以了,这是个很小的包,里面没有引用其它包,绝对能跑起来。  主要特点: 实现了Tiles的类似功能,完全对象化,无需配置,直接在页面可动态生成其它页面组件(称做Box),从此,面向对象的那一套什么继承接口之类的,就可以放手用在

drinkjava的专栏 1383

【系统分析师】2025年下半年真题:综合知识-答案及详解(回忆版)

本文摘要包含系统分析师考试相关题目解析,主要涵盖软件工程、数据库、网络协议和项目管理等知识点。内容包括:软件再工程与逆向工程的区别(D);GNU GPL开源协议特性(A);TCP/IP协议分层(A、B);数据库范式判定(A、B);前导图进度管理工具(C);系统规划中的数据类识别方法(B、D);关系代数除运算(C);CMM优化级特征(A);回归测试重要性(C)。这些解析帮助理解核心概念和考试重点。

数据知道的博客 6720

SiteMesh详解

1.Sitemesh简介         Sitemesh是一个网络布局和修饰的框架,基于filter技术.       作用:利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的,减少重复代码的编写.(可能看到这儿不是很清楚,下面配几张图加以解释).      举个应用的场景: 点击下图上方的菜单.在浏览器的下方会显示出相应的界面.此时你会发现上面菜单栏的内容是一样的,而下面显示

qq_38255772的博客 748

深度强化Q学习-基于微软AirSim仿真环境的自动驾驶案例(原理代码详解简易可行)

最近在学习《强化学习原理与Python实现》,肖智清著。参考第十二章的自动驾驶案例,写一篇总结,尽量做到简单可行,让有志于自动驾驶的小伙伴可以通过此篇博客可以管中窥豹,初步了解自动驾驶的强化学习训练过程。 本篇将自动驾驶问题转化为回合制的强化学习任务,设计以车辆观察图像和运行状态为输入的自动驾驶算法,并在AirSim仿真环境中进行训练和测试。本篇使用带经验回放和目标网络的基于深度Q网络算法设计并实现智能体,对经验回放、目标网络和深度Q学习算法进行简单介绍,并用代码实现。

shao918516的博客 8599

华为OD机试真题 新系统2026-04-15 Python&JS 实现【失灵的键盘】

有一个键盘有2个按键失灵了,按下这些键时会连续输出其他键对应的字符两次。具体如下: 1. 按下j键一次,屏幕上显示uu(两个连续的u);  按下b键一次,屏幕上显示t(两个连续的t) 2. u键和t键是好的,按下u键一次时,屏幕只会显示一次u(正常按键);按下t键一次时,屏幕只会显示一次t(正常按键) 3. 假定屏幕上连续显示两个t一定是按了一次b键,而不是两次t键;假定按键t之后不会紧接着按键b,即tttt转义为两个b,而不可能是tb

MISAYAONE的博客 524

SiteMesh3快速入门

文章目录介绍工作原理配置及使用添加maven依赖webxml中添加SiteMesh过滤器创建一个装饰页面(decorator page)创建一个被装饰页面(content page)配置方式XML配置Java配置查看效果高级配置XML形式配置Java形式配置 介绍 工作原理 配置及使用 添加maven依赖 webxml中添加SiteMesh过滤器 创建一个装饰页面(decorator page) ...

炎溟墨的博客 372

谁在 SAP 系统里说了算:事务码 SCC4 与 SE06 的分工、优先级与实战管控

SAP系统通过SE06和SCC4两套机制控制变更权限:SE06作为系统级"总闸"管理跨Client对象修改,SCC4作为Client级"分闸"控制Client内配置变更。两者存在明确优先级,SE06的全局设置优先于SCC4。当SE06设为"不可修改"时,即使SCC4开放也无法更改跨Client对象。实际项目中需同时检查两处设置,并遵循"最小开放"原则进行变更管理。这种分层设计既满足日常维护需求,又能实现严格的变更管控。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 229

SIteMesh介绍

http://www.iteye.com/topic/251521 一、SIteMesh介绍 一、SiteMesh简介 SiteMesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静

qq_1164549051的博客 291

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SiteMesh 介绍

这里介绍SiteMesh3.。因为这几天才接触到siteMesh,现在的版本是3.官网:http://www.sitemesh.org/index.html SiteMesh 是什么? siteMesh用来装饰网页。使网页具有统一的布局。这对于实际项目有很大的帮助。SiteMesh是基于Java、J2EE和XML的开源框架,依赖于从Servlet 2.3版本里引入的新功能——过滤器(Filte

wqjsir的专栏 8702

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SiteMesh小例子及详细介绍

企业级项目实战(带源码)地址:http://zz563143188.iteye.com/blog/1825168 收集五年的开发资料下载地址:  http://pan.baidu.com/share/home?uk=4076915866&amp;view=share 演示项目源码请下载codeFactory20130321,lib20130321文件,   一、SiteMesh项...

zl19861225的专栏 177

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SiteMesh的介绍用法及原理

一、SiteMesh项目简介        OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)  的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。         Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大  量页

huwenhu2007的专栏 989

翻译]SiteMesh介绍 (转)

        注:sitemesh,一个不错的tiles替代方案,比tiles做的更漂亮优雅。本文是sitemesh官方推荐的入门文档,本来想自己翻译的,突然发现有人先行一步了,就转过来看吧。以前我通常使用旧式的方法来建立自己的web应用:手工排版,仔细使用每一个字节使其工作在Unicode下,同时使用make文件来适应不同的CPU……或许现在我们可以换一种方式。尽管我从没有感觉到需

2225
上一篇: Apache Thrift 介绍
johnnydev
博客等级 码龄15年 16粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值