SiteMesh应用装饰器模式,通过filter截取request和response,然后给原始页面一定的装饰,把结果换回给客户端。对于被装饰的页面来说,完全无需关心本页面被装饰器装饰(装饰器配置在配置文件中,由装饰器配置文件来控制那个装饰器装饰哪些页面)。通过这种方式,可以最大限度的实现页面代码的复用,并提供优秀的解耦。
下面是整合SiteMesh所需的步骤。
1.把相应的jar包放到lib下。
2.在web.xml中加上如下配置。
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3.为了在jsp页面能用SiteMesh标签库则还需要导入SiteMesh标签库
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
下面是一个example装饰页面
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title><decorator:title default="SiteMesh的装饰器页"/></title>
<link href="images/main.css" rel="stylesheet" type="text/css">
<decorator:head/>
<s:head/>
<script>
function refresh()
{
document.getElementById("authImg").src='authImg?now=' + new Date();
}
</script>
</head>
<body>
<table width="780" align="center">
<tr>
<td valign="top" width="200">
<!-- 引入一个页面,临时指定所用的装饰器 -->
<page:applyDecorator page="/decorators/book.html" name="panel" />
<page:applyDecorator page="/decorators/link.html" name="panel" />
</td>
<td width="580">
<table width="100%" height="100%">
<tr>
<td id="pageTitle">
<decorator:title/>
</td>
</tr>
<tr>
<td valign="top" height="100%">
<decorator:body />
</td>
</tr>
<tr>
<td id="footer">
All Rights Reserved.<br>
版权所有 Copyright@2006 Yeeku.H.Lee <br>
如有任何问题和建议,<a href="mailto:kongyeeku@163.com">请E-mail to me</a>!<br>
建议您使用1024*768分辨率,IE5.0以上版本浏览本站!
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
4.下面使用配置文件来定义装饰器 decorators.xml
<?xml version="1.0" encoding="GBK"?>
<decorators defaultdir="/decorators">
<!-- 在excludes元素下指定的页面将不会由SiteMesh来装饰 -->
<excludes>
</excludes>
<!-- 创建一个名为main的装饰器,该装饰器页面为main.jsp,
用于装饰pattern指定的URL的所有页面-->
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
<!-- 定义一个装饰器,但该装饰器默认不装饰任何页面 -->
<decorator name="panel" page="panel.jsp"/>
</decorators>
分享到:
相关推荐
将Struts2与SiteMesh整合,可以实现更加统一和规范化的网站外观,并减少重复代码。 整合Struts2和SiteMesh主要涉及以下几个步骤: 1. **添加依赖**:首先,在项目中引入SiteMesh的jar包。如果使用的是Maven,可以...
### Struts2整合SiteMesh技巧 #### 概述 在Web开发中,为了实现页面布局的统一性与可维护性,通常会采用一种称为“页面布局管理”的技术。Struts2框架提供了对SiteMesh的支持,这是一种强大的页面布局管理工具。...
Struts2和Sitemesh是两个非常流行的Java Web开发框架,它们在构建高效、结构化的MVC(模型-视图-控制器)应用中起到关键作用。Struts2是一个基于MVC设计模式的开源框架,主要用于控制应用程序的流程,而Sitemesh则是...
要将Struts2和Sitemesh整合,我们需要两个关键的组件:Sitemesh框架本身(在这个例子中是版本2.4.2)和Struts2的Sitemesh插件(版本2.1.8)。这两个组件的集成使得Struts2能够自动将Sitemesh应用于其返回的页面,...
struts框架与sitemesh框架整合的插件,在java web开发中可以制作模板页,使自己做的网站看起来更专业
在Struts2与Sitemesh的整合中,我们通常会在Struts2的配置文件中添加Sitemesh的拦截器,这样,每次Struts2处理完Action返回的结果后,Sitemesh会自动对结果页面进行装饰。这样不仅简化了开发者的工作,也让网站的...
Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大 量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的...
在源码中,可以看到Sitemesh配置和过滤器的实现,以及如何与Struts2整合,确保每个Action的结果都能被正确装饰。 3. **FreeMarker模板引擎**:FreeMarker是一个基于模板的语言,它与Java代码分离,使得视图层更加...
而Struts2 SiteMesh 插件则使得整合 SiteMesh 和 Struts2 框架变得更加方便,让开发者可以充分利用 SiteMesh 的功能来提升用户体验。 首先,我们需要理解 Struts2 是一个基于 Model-View-Controller(MVC)设计模式...
第10章 Struts 2的标签库,第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 ...
在SSH2集成中,Sitemesh可以用来装饰Struts2的Action结果页面,确保每个页面都有统一的头部、底部和侧边栏等元素。 **Spring框架**: Spring的核心是IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented ...
1. 添加依赖:整合SSH,需要在项目中引入相应的jar包,包括Struts2、Spring、iBatis以及它们的依赖库,例如sitemesh用于页面装饰。确保包含所有必要的jar,如描述中提到的,这里有18个jar包,涵盖了基本需求。 2. ...
在Struts2中整合SiteMesh,你需要将sitemesh-2.3.jar和Struts2-sitemesh-plugin-2.0.6.jar添加到项目的类路径下。然后,在`web.xml`中配置ActionContextCleanUp过滤器和SiteMesh的PageFilter,这两个过滤器分别用于...
8. `struts2-sitemesh-plugin-2.0.11.jar`:整合Sitemesh进行页面布局和装饰。 Spring框架的核心组件主要是`spring.jar`,它提供: 1. 依赖注入(DI)和控制反转(IoC):使得对象间的依赖关系可以在运行时自动管理...
【Struts2+Spring+Hibernate 整合应用】 在Java Web开发中,Struts2、Spring和Hibernate是三个非常重要的开源框架。它们各自解决了不同层面的问题,而将它们整合在一起可以构建出高效、灵活和可维护的Web应用程序。...
4. **Spring与Struts2整合**:添加Spring插件到Struts2的配置文件,使Spring能够管理Struts2的Action实例。 5. **Spring与iBatis整合**:使用Spring的JDBC模板或MyBatis-Spring库,将iBatis的SqlSessionFactory注入...
本篇文章将详细介绍如何在项目中初步整合Sitemesh,以便实现模块化的设计。 ### 一、Sitemesh 概述 1. **装饰模式**:Sitemesh 使用装饰模式,通过拦截HTTP请求,动态地将页面内容与装饰模板结合,形成最终的HTML...
第五章可能涵盖Struts2的模型部分,包括数据持久化、DAO设计模式以及与ORM框架(如Hibernate、MyBatis)的整合。 第六章可能讲解Struts2的国际化和本地化支持,如何设置资源文件以支持多种语言,并在应用中动态切换...