`

sitemesh(简介)

 
阅读更多
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>
1
3
分享到:
评论

相关推荐

    SiteMesh简介一(图片不出来。请下附件看)

    SiteMesh 是一个开源的Web应用程序框架,用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求并应用预定义的模板来统一网站的外观和感觉,使得开发者可以在不修改每个单独页面的情况下,轻松地实现头部、底部...

    sitemesh 完美合集 4个资料和jar文件

    Sitemesh简介: SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. sitemesh应用Decorator模式,用filter截取request和response,把页面组件...

    sitemesh例子

    **Sitemesh简介** Sitemesh 是一个开源的 Web 应用程序装饰框架,主要用于解决网页布局和页面统一风格的问题。它通过拦截 HTTP 请求,将请求的页面内容与预先定义好的模板结合,使得开发者可以轻松地创建出统一的...

    sitemesh布局知识点汇总

    #### 一、Sitemesh简介 Sitemesh是一个非常实用且功能强大的Web页面布局和装饰框架,适用于多种Web应用程序,包括但不限于Java(JSP)、PHP、ASP等技术栈下的应用。它能够有效地帮助开发者统一Web应用的界面风格,...

    siteMesh例子

    SiteMesh简介: SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. SiteMesh应用Decorator模式,用filter截取request和response,把页面组件...

    SiteMesh教程.doc

    **1.1 SiteMesh简介** SiteMesh是一个基于Java、J2EE和XML的开源框架,主要用于网站内容的装饰和布局管理。当一个企业级Web站点需要整合多种技术(如J2EE、CGI或Microsoft IIS Server)时,如何保持站点的整体一致...

    SiteMesh学习文档

    ### 第一章 SITEMESH 简介 1. **SITEMESH 简介**:SiteMesh的核心功能是通过拦截HTTP请求,将页面内容与预定义的模板结合,实现页面的统一布局。它的工作原理是,当用户请求一个页面时,SiteMesh会捕获这个请求,...

    sitemesh学习资料

    ### 第一章 SITEMESH 简介 1. **SITEMESH 简介**: SiteMesh 是一款设计用于处理Web应用的页面布局问题的工具。它的主要功能是将页面分为主内容区域和公共装饰区域,如页头、页脚、侧边栏等,使得开发者能够轻松地...

    Sitemesh例子分享

    **Sitemesh简介** Sitemesh是一款开源的Web应用程序装饰框架,主要用于网页布局和样式统一。它通过在服务器端对HTTP响应进行拦截,将页面内容与装饰模板结合,实现页面的统一外观和感觉。Sitemesh的核心功能是帮助...

    jsp中sitemesh修改tagRule技术分享.docx

    #### 一、Sitemesh简介与应用场景 Sitemesh是一个强大的Web页面布局工具,它允许开发者轻松地实现网站布局的设计与维护。通过Sitemesh,我们可以方便地将网页内容与布局分离,从而达到更好的可维护性和复用性。 ##...

    Sitemesh 3 的使用及配置

    #### 一、Sitemesh 3 简介 Sitemesh 是一个非常实用的Web页面布局与修饰框架,它通过Servlet中的Filter来实现网页的装饰功能,类似于ASP.NET中的“母版页”技术。这种技术允许开发者在不改变业务逻辑代码的情况下...

    sitemesh教程

    #### 一、简介 SiteMesh是一个强大的Web页面布局工具,它允许开发者在Web应用中使用模板化的设计来构建网页。通过使用SiteMesh,可以很容易地实现对整个网站外观的统一控制,而无需对每个单独的页面进行修改。此...

    sitemesh和freemarker结合自我总结

    #### 一、简介 - **Freemarker**:作为一款功能强大的模板引擎,Freemarker被广泛应用于Web应用程序中,它负责将数据模型转换成HTML、XML或其他文本格式。Freemarker的一个显著特点是它支持多种编程语言,并且与Java...

    SpringMVC-Freemarker_Sitemesh3例子

    在压缩包中,`readme.txt`通常包含项目简介、安装指南或运行步骤等信息。`pom.xml`是Maven项目的配置文件,其中会声明SpringMVC、Freemarker和Sitemesh3的相关依赖。`src`目录则是源代码存放的地方,通常包含Java...

    分布式框架简介SSM组合+ springmvc+mybatis+shiro+restful+bootstrap

    ### 分布式框架简介SSM组合+springmvc+mybatis+shiro+restful+bootstrap #### 一、基础知识与入门 本节主要介绍如何基于SSM(Spring、SpringMVC、MyBatis)框架搭建一个简单的Web应用程序,并实现一个HelloWorld...

    struts2讲义_吴峻申

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

    struts2 原理简介

    4. **与第三方库集成**:Struts2能够无缝集成Spring框架,SiteMesh用于页面布局,Tiles用于视图管理,以及OGNL(Object-Graph Navigation Language)作为表达式语言。 5. **强大的标签库**:Struts2提供了基于主题...

    strut2讲义 ,讲座

    - SiteMesh 页面布局框架简介:SiteMesh可以集成到Struts2,实现统一的页面布局。 第 2 章:Web基础技术简介 2.1 B/S 和 C/S 系统区别 B/S(Browser/Server)架构基于浏览器和服务器交互,而C/S(Client/Server)...

    ssh框架学习指南介绍ssh的框架结构

    #### 一、SSH框架简介 SSH框架,即Struts2 + Spring + Hibernate的组合,是一种流行的Java Web开发框架。它将MVC模式、依赖注入和对象关系映射等技术结合在一起,使得开发更加高效、灵活。 #### 二、SSH框架的构建...

Global site tag (gtag.js) - Google Analytics