OpenSymphony——SiteMesh——Decorators(2)

本文介绍如何在Struts2+Spring2+Hibernate3架构中使用SiteMesh进行页面布局管理,包括配置步骤、排除特定路径及自定义装饰器的方法。

五、如何使用SiteMesh
以struts2+spring2+hibernate3构架的系统为例
1、下载SiteMesh下载地址:http://www.opensymphony.com/sitemesh/download.action
2、在工程中引入SiteMesh的必要jar包,和struts2-sitemesh-plugin-2.0.8.jar;
3、修改你的web.xml,在里面加入sitemesh的过滤器,示例代码如下:    

OpenSymphony——SiteMesh——Decorators(2)<!-- sitemesh配置 -->
OpenSymphony——SiteMesh——Decorators(2)    
<filter>
OpenSymphony——SiteMesh——Decorators(2)        
<filter-name>sitemesh</filter-name>
OpenSymphony——SiteMesh——Decorators(2)        
<filter-class>
OpenSymphony——SiteMesh——Decorators(2)            com.opensymphony.module.sitemesh.filter.PageFilter
OpenSymphony——SiteMesh——Decorators(2)        
</filter-class>
OpenSymphony——SiteMesh——Decorators(2)    
</filter>
OpenSymphony——SiteMesh——Decorators(2)    
<filter-mapping>
OpenSymphony——SiteMesh——Decorators(2)        
<filter-name>sitemesh</filter-name>
OpenSymphony——SiteMesh——Decorators(2)        
<url-pattern>/*</url-pattern>
OpenSymphony——SiteMesh——Decorators(2)    
</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值与其匹配就行;


OpenSymphony——SiteMesh——Decorators(2)<property name="decorators-file" value="/WEB-INF/decorators.xml" />

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

      具体代码见OpenSymphony——SiteMesh——Decorators(3)
这就是个简单的模板,页面的头和脚都由模板里的静态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:

OpenSymphony——SiteMesh——Decorators(2)<?xml version="1.0" encoding="ISO-8859-1"?>
OpenSymphony——SiteMesh——Decorators(2)
<decorators defaultdir="/decorators">
OpenSymphony——SiteMesh——Decorators(2)    
<!-- Any urls that are excluded will never be decorated by Sitemesh -->
OpenSymphony——SiteMesh——Decorators(2)    
<excludes>
OpenSymphony——SiteMesh——Decorators(2)        
<pattern>/index.jsp*</pattern >
          <pattern>/login/*</pattern>

OpenSymphony——SiteMesh——Decorators(2)    
</excludes>
OpenSymphony——SiteMesh——Decorators(2)    
<decorator name="main" page="main.jsp">   <!-- 指明了一个名为main的装饰器 -->
OpenSymphony——SiteMesh——Decorators(2)        
<pattern>/*</pattern>
OpenSymphony——SiteMesh——Decorators(2)    
</decorator>
OpenSymphony——SiteMesh——Decorators(2)
</decorators>


decorators.xml有两个主要的结点:(main装饰器默认情况下装饰web应用根路径下的所有页面)

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

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


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

六、使用SiteMesh总结

  1. 使用SiteMesh带来的不仅仅是页面结构问题,它的出现让我们有更多的时间去关注底层业务逻辑,而不是整个页面的风格和结构。
  2. 它让我们摆脱了大量用include方式复用页面尴尬局面;
  3. 也避免了tiles框架在团队开发中的复杂度;
  4. 它还提供了很大的灵活性以及给我们提供了整合异构Web系统页面的一种方案。

 

【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器状态空间平均模型的建模策略。该方法通过对系统中多个相互耦合的DC-DC变换器进行统一建模,构建出整个微电网的集中状态空间模型,并在此基础上实施线性化处理,便于后续的小信号分析与稳定性研究。文中详细阐述了建模过程中的关键步骤,包括电路拓扑分析、状态变量选取、平均化处理以及雅可比矩阵的推导,最终通过Matlab代码实现模型仿真验证,展示了该方法在动态响应分析和控制器设计中的有效性。; 适合人群:具备电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事微电网、新能源系统建模与控制研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网中多变换器系统的统一建模方法;②理解状态空间平均法在非线性电力电子系统中的应用;③实现系统线性化并用于稳定性分析与控制器设计;④通过Matlab代码复现和扩展模型,服务于科研仿真与教学实践。; 阅读建议:建议读者结合Matlab代码逐步理解建模流程,重点关注状态变量的选择与平均化处理的数学推导,同时可尝试修改系统参数或拓扑结构以加深对模型通用性和适应性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值