struts2之整合sitemesh(简介)
sitemesh是一个非常优秀的页面装饰框架,sitemesh通过filter来截取request和response,然后给原始的页面加入一定的装饰(可能为header,footer等),然后把结果返回给客户端。对于被装饰的页面而言,完全无需关心本页面被装饰器装饰(装饰器被配置在配置文件中,由装饰器配置文件来控制哪个装饰器装饰哪些页面)。通过这种方式可以最大限度地实现页面代码的复用,并提供优秀的解耦。
sitemesh框架是opensymphony团队开发的javaEE框架之一,该框架的目的是页面的可维护性和复用性。sitemesh应用装饰器模式,用filter截取request和response,把装饰器页面中指定的公用内容插入到被装饰页面中,从而形成一个个完整页面。
通过使用sitemesh的页面装饰效果,我们就可以删除所有jsp页面的include指令,但达到与使用include指令相同的效果,并提供比include更好的解耦,更好的代码复用。
struts2可以通过sitemesh插件来与sitemesh框架整合,一旦strut2应用整合了sitemesh框架后,就可使用 sitemesh装饰页面来装饰应用中的其他页面。struts2对sitemesh框架进行了进一步封装,使用sitemesh装饰会更加简单。
1.下载sitemesh-xxx.jar文件并复制到web应用的WEB0-INF/lib路径下。因为与struts2整合,所以我们还需要struts2-sitemesh-plugin-xxx.jar文件,(
这里我用的是sitemesh-2.4.2.jar)
2.为了使sitemesh框架能够处理所有的用户请求,还必须在web.xml文件中配置sitemesh框架的核心Filter。配置sitemesh的核心Filter的配置片段如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
3.为了在jsp页面中使用sitemesh的标签库,则还需要导入sitemesh标签库。如果使用Servlet2.4以上规范,则无需任何修改,直接在jsp页面中使用taglib指令导入标签库即可。
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
4.定义装饰器页面
装饰器页面就是一个普通的jsp页面,但这个页面包含了一些sitemesh标签。看下面的sitemesh装饰器页面代码:
<%@ page contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<html>
<head>
<title><decorator:title default="装饰器页面..." /></title>
<decorator:head />
</head>
<body>
<font size=8 color=red>这是一个Sitemesh的Demo</font>sitemesh的例子<hr>
<decorator:body />
<hr>
[align=center]sitemesh快速入门 [/align]
</body>
</html>
从上面页面代码中可以看出,该页面与传统jsp页面并没有太大的特别之处,只是该页面中包含了3个sitemesh标签:
. <decorator:title.../>:将被装饰页面的title部分插入该页面中。
. <decorator:head.../>:将被装饰页面的head部分插入该页面中。
. <decorator:body.../>:将被装饰页面的body部分插入该页面中。
sitemesh装饰页是整个应用的"母板页",被该装饰器装饰的页面都会使用该"母板页",从而保证所有页面看上去有相同的风格。"母板页"中包含了一些sitemesh标签,这些标签用于将被装饰页面的相应部分导入该"母板页"。
上面仅仅是定义了装饰器页面代码,还没有告诉sitemesh这个页面就是一个装饰器页面。为此,我们将该页面保存在web应用的decorators路径下。注:装饰器页面可以保存在web应用的任何路径,只要在配置文件中配置该路径即可。
5.下面在配置文件中配置该装饰器页面,配置装饰器页面使用decorators.xml文件,因此还需要增加一个decorators.xml文件,该文件的代码如下(该文件应放在/WEB-INF/下面):
<?xml version="1.0" encoding="GBK"?>
<!-- defaultdir指定装饰器文件所在的路径 -->
<decorators defaultdir="/decorators">
<!-- 在excludes元素下指定的页面将不会由sitemesh来装饰 -->
<excludes>
<pattern>/exclude.jsp</pattern>
<pattern>/exclude/*</pattern>
</excludes>
<!-- 指定main装饰器,该装饰器使用main.jsp页面 -->
<decorator name="main" page="main.jsp">
<!-- 使用main装饰器装饰所有的JSP页面 -->
<pattern>/*</pattern>
<pattern>/*.jsp</pattern>
</decorator>
<!-- 定义一个装饰器,但该装饰器默认不装饰任何页面 -->
<decorator name="panel" page="panel.jsp" />
</decorators>
6.在使用sitemesh框架还需要添加sitemesh配置文件sitemesh.xml 该文件的代码如下(该文件应放在/WEB-INF/下面):
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml"/>
<excludes file="${decorators-file}"/>
<page-parsers>
<parser default="true" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
<parser content-type="text/html" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
<parser content-type="text/html;charset=UTF-8" class="com.opensymphony.module.sitemesh.parser.FastPageParser"/>
</page-parsers>
<decorator-mappers>
<mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper>
</decorator-mappers>
</sitemesh>
分享到:
相关推荐
SiteMesh 是一个开源的Web应用程序框架,用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求并应用预定义的模板来统一网站的外观和感觉,使得开发者可以在不修改每个单独页面的情况下,轻松地实现头部、底部...
Sitemesh简介: SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. sitemesh应用Decorator模式,用filter截取request和response,把页面组件...
**Sitemesh简介** Sitemesh 是一个开源的 Web 应用程序装饰框架,主要用于解决网页布局和页面统一风格的问题。它通过拦截 HTTP 请求,将请求的页面内容与预先定义好的模板结合,使得开发者可以轻松地创建出统一的...
#### 一、Sitemesh简介 Sitemesh是一个非常实用且功能强大的Web页面布局和装饰框架,适用于多种Web应用程序,包括但不限于Java(JSP)、PHP、ASP等技术栈下的应用。它能够有效地帮助开发者统一Web应用的界面风格,...
SiteMesh简介: SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. SiteMesh应用Decorator模式,用filter截取request和response,把页面组件...
**1.1 SiteMesh简介** SiteMesh是一个基于Java、J2EE和XML的开源框架,主要用于网站内容的装饰和布局管理。当一个企业级Web站点需要整合多种技术(如J2EE、CGI或Microsoft IIS Server)时,如何保持站点的整体一致...
### 第一章 SITEMESH 简介 1. **SITEMESH 简介**:SiteMesh的核心功能是通过拦截HTTP请求,将页面内容与预定义的模板结合,实现页面的统一布局。它的工作原理是,当用户请求一个页面时,SiteMesh会捕获这个请求,...
### 第一章 SITEMESH 简介 1. **SITEMESH 简介**: SiteMesh 是一款设计用于处理Web应用的页面布局问题的工具。它的主要功能是将页面分为主内容区域和公共装饰区域,如页头、页脚、侧边栏等,使得开发者能够轻松地...
**Sitemesh简介** Sitemesh是一款开源的Web应用程序装饰框架,主要用于网页布局和样式统一。它通过在服务器端对HTTP响应进行拦截,将页面内容与装饰模板结合,实现页面的统一外观和感觉。Sitemesh的核心功能是帮助...
#### 一、Sitemesh简介与应用场景 Sitemesh是一个强大的Web页面布局工具,它允许开发者轻松地实现网站布局的设计与维护。通过Sitemesh,我们可以方便地将网页内容与布局分离,从而达到更好的可维护性和复用性。 ##...
#### 一、Sitemesh 3 简介 Sitemesh 是一个非常实用的Web页面布局与修饰框架,它通过Servlet中的Filter来实现网页的装饰功能,类似于ASP.NET中的“母版页”技术。这种技术允许开发者在不改变业务逻辑代码的情况下...
#### 一、简介 SiteMesh是一个强大的Web页面布局工具,它允许开发者在Web应用中使用模板化的设计来构建网页。通过使用SiteMesh,可以很容易地实现对整个网站外观的统一控制,而无需对每个单独的页面进行修改。此...
#### 一、简介 - **Freemarker**:作为一款功能强大的模板引擎,Freemarker被广泛应用于Web应用程序中,它负责将数据模型转换成HTML、XML或其他文本格式。Freemarker的一个显著特点是它支持多种编程语言,并且与Java...
在压缩包中,`readme.txt`通常包含项目简介、安装指南或运行步骤等信息。`pom.xml`是Maven项目的配置文件,其中会声明SpringMVC、Freemarker和Sitemesh3的相关依赖。`src`目录则是源代码存放的地方,通常包含Java...
### 分布式框架简介SSM组合+springmvc+mybatis+shiro+restful+bootstrap #### 一、基础知识与入门 本节主要介绍如何基于SSM(Spring、SpringMVC、MyBatis)框架搭建一个简单的Web应用程序,并实现一个HelloWorld...
1.2.8 SiteMesh页面布局框架简介 17 1.3 我们为什么要用Struts2 17 1.4 Web项目中使用Struts2初探 20 第2章 Web基础技术简介 31 2.1 B/S和C/S系统区别 31 2.2 JSP和Servlet介绍 32 2.3 XML知识介绍 34 第3章 Struts2...
4. **与第三方库集成**:Struts2能够无缝集成Spring框架,SiteMesh用于页面布局,Tiles用于视图管理,以及OGNL(Object-Graph Navigation Language)作为表达式语言。 5. **强大的标签库**:Struts2提供了基于主题...
- SiteMesh 页面布局框架简介:SiteMesh可以集成到Struts2,实现统一的页面布局。 第 2 章:Web基础技术简介 2.1 B/S 和 C/S 系统区别 B/S(Browser/Server)架构基于浏览器和服务器交互,而C/S(Client/Server)...
#### 一、SSH框架简介 SSH框架,即Struts2 + Spring + Hibernate的组合,是一种流行的Java Web开发框架。它将MVC模式、依赖注入和对象关系映射等技术结合在一起,使得开发更加高效、灵活。 #### 二、SSH框架的构建...