`

SiteMesh的使用

 
阅读更多
20.2  单独使用SiteMesh

20.2.1SiteMesh下载

需要到OpenSymphony的官网http://www. opensymphony.com/sitemesh/download.action下载相关的资源,现在SiteMesh的最新版本是2.4.1,下载的时候有四种选择:
JAR:仅仅下载SiteMesh的jar包。
Full:下载SiteMesh的全部内容,包括源代码、文档、依赖包。
Blank app:下载SiteMesh项目的一个空项目。
Example app:下载SiteMesh的示例项目。
只需要下载其中的Full和Blank app就可以开始学习了。

       下载Full,得到的文件名为sitemesh-2.4.1.zip,其中包含三个文件夹:
doc:SiteMesh框架的文档。
lib:SiteMesh依赖的所有jar包。
src:SiteMesh的所有源文件。

下载Blank app,得到的文件名为sitemesh-blank.war,其实war文件也是压缩包,所以可以用直接用winrar打开,得到里面的重要内容。
sitemesh-blank\WEB-INF\web.xml:里面包含了要引用SiteMesh所需要引用的过滤器。
sitemesh-blank\WEB-INF\lib\sitemesh-2.4.1.jar:SiteMesh的jar包。
sitemesh-blank\WEB-INF\lib下的sitemesh-decorator.tld和sitemesh-page.tld:这是SiteMesh定义模板页面是需要用到的两个自定义标签库。
sitemesh-blank\WEB-INF\ decorators.xml:定义模板页面和被装饰页面如何结合。



20.2.2拷贝资源

       先来单独使用SiteMesh,需要另外建立一个动态的Web工程,名称随意,比如叫做td。在新建的Web项目下,需要把下载的各种资源拷贝到位:
拷贝SiteMesh依赖的jar包,也就是sitemesh-2.4.1\lib包下所有的jar,到Web工程的构建路径下WebContent\WEB-INF\lib包下。
拷贝SiteMesh的jar包sitemesh-blank\WEB-INF\lib\sitemesh-2.4.1.jar,到Web工程的构建路径下WebContent\WEB-INF\lib包下。
拷贝SiteMesh的自定义标签,也就是sitemesh-blank\WEB-INF\lib包下所有的tld文件,到Web工程的WEB-INF\lib文件夹下。
拷贝SiteMesh的decorators.xml,在sitemesh-blank\WEB-INF包下,到Web工程的WEB-INF文件夹下。



20.2.3引用过滤器

       拷贝完所有的资源,需要让我们的Web项目引用SiteMesh的过滤器。打开sitemesh-blank\WEB-INF\web.xml,拷贝出其中SiteMesh过滤器的定义部分和映射部分,示例如下:

java代码:
01.<filter> 
02.    <filter-name>sitemesh</filter-name> 
03.    <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class> 
04.</filter> 
05.<filter-mapping> 
06.    <filter-name>sitemesh</filter-name> 
07.    <url-pattern>/*</url-pattern> 
08.</filter-mapping> 

把这部分内容拷贝入我们的Web工程的web.xml中。



20.2.4定义模板页面

       现在来定义SiteMesh的模板页面,在这个页面里,把模板部分,比如页眉、页脚,直接用HTML代码定义好,需要被装饰页面指定的部分,用SiteMesh提供的自定义标签来定义。

把这个页面命名为main.jsp,在WebContent下面新建一个decorators文件夹,然后把main.jsp放置到这个文件夹下。注意,这个文件的名字和位置在将来模板页面和被装饰页面结合时非常重要。文件内容示例如下:

java代码:
01.<%@ page contentType="text/html; charset=gb2312" 
02.    pageEncoding="gb2312"%> 
03.<%@taglib prefix="decorator" uri="/WEB-INF/lib/sitemesh-decorator.tld" %> 
04.<html> 
05.<head> 
06.<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
07.<title>模板指定的标题--具体页面指定的标题(<decorator:title/>) </title> 
08.    <decorator:head/> 
09.</head> 
10.<body> 
11.    模板页面指定的头部分 
12.    <hr> 
13.    <decorator:body/> 
14.    <hr> 
15.    模板页面指定的脚部分 
16.</body> 
17.</html> 

       上面提到的使用SiteMesh的自定义标签就是:<decorator:title/>、<decorator:head/>和<decorator:body/>,这些都是等待被装饰页面填入的部分,其他的HTML代码就是我们写的模板页面部分。

       其中:<decorator:title/>标签用来引用被装饰页面的标题,<decorator:head/>用来引用被装饰页面的头信息,<decorator:body/>用来引用被装饰页面的内容。




20.2.5定义被装饰页面

       有了模板页面,接下来定义被装饰的页面。被装饰页面与普通的页面一模一样,根本没有任何区别,比如来写一个应用的首页,名称为index.jsp,里面并没有真的内容,仅仅显示一下,放置到WebContent下,示例如下:

java代码:
01.<%@ page contentType="text/html; charset=gb2312"  pageEncoding="gb2312"%> 
02.<html> 
03.<head> 
04.<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
05.<title>首页</title> 
06.</head> 
07.<body> 
08.    首页的内容 
09.</body> 
10.</html> 




20.2.6合成模板页面与被装饰页面

       接下来指定模板页面与被装饰页面的合成,打开拷贝过来的decorators.xml,里面的内容如下:

java代码:
01.<?xml version="1.0" encoding="ISO-8859-1"?> 
02. 
03.<decorators defaultdir="/decorators"> 
04.    <decorator name="main" page="main.jsp"> 
05.        <pattern>/*</pattern> 
06.    </decorator> 
07. 
08.    <decorator name="panel" page="panel.jsp"/> 
09.    <decorator name="printable" page="printable.jsp"/> 
10.</decorators> 
这个xml的根元素是<decorators>元素,里面的每一个<decorator>元素都指定了一组模板页面与被装饰页面的关系。而<decorators>元素的defaultdir属性指明了在寻找模板页面的时候,从Web应用的/decorators路径下开始找,也就是WebContent/decorators。
<decorator>元素的name属性只是为这个元素取一个名字,page属性指定了模板页面的名字。
<decorator>元素的<pattern>子元素的值为/*,指明了这个Web应用中所有的页面都要会被加上这个模板页面。

为了示例的简单,直接把后面两组模板与被装饰页面关系删掉就可以了。并把xml的编码方式改为UTF-8,示例代码如下:

java代码:
01.<?xml version="1.0" encoding="UTF-8"?> 
02.<decorators defaultdir="/decorators"> 
03.    <decorator name="main" page="main.jsp"> 
04.        <pattern>/*</pattern> 
05.    </decorator> 
06.</decorators> 

测试运行一下,看看效果,访问:http://localhost:9080/td/index.jsp,会发现得到的结果就是模板页面+被装饰的页面,如下图所示:



图19.2 使用SiteMesh装饰页面的效果
分享到:
评论

相关推荐

    sitemesh使用例子

    sitemesh 使用例子。 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;decorators defaultdir="/decorators"&gt; &lt;!-- 此处用来定义不需要过滤的页面 --&gt; &lt;excludes&gt; &lt;/excludes&gt; &lt;!-- 用来定义装饰器要过滤的...

    siteMesh使用示例

    如果需要对某些特定页面不应用装饰,或者只对特定部分进行装饰,可以使用 `excludes` 和 `includes` 属性在 `web.xml` 中配置 SiteMesh 过滤器。 9. **优化与性能** SiteMesh 通常对性能的影响很小,但可以通过...

    sitemesh的使用和例子

    ### Sitemesh使用示例 在提供的压缩包文件中,有多个HTML和JSP文件,它们可能是Sitemesh的使用示例: - **index.html**:通常作为网站的主页,可能展示了Sitemesh如何应用全局布局。 - **badsource.html**、**...

    siteMesh demo+文档

    接下来是"siteMesh使用文档"。这份文档通常会涵盖以下几个关键知识点: 1. **安装SiteMesh**:这通常包括下载SiteMesh的库文件,将其添加到你的项目构建路径中(例如,如果你使用Maven,可以在pom.xml中添加对应的...

    页面装饰器(sitemesh)实例源代码

    3. **创建装饰模板**:Sitemesh使用HTML文件作为装饰模板,你可以根据需求创建一个基础模板,例如`layout.html`,该模板通常包含页头、页脚、侧边栏等公共部分。 4. **设置页面内容**:对于每个需要装饰的页面,...

    使用sitemesh替换tiles2,spring mvc+spring web flow+sitemsh

    3. **创建装饰模板**:Sitemesh 使用一个名为 `decorators` 的目录来存储装饰模板。这些模板定义了页面的通用结构,如头部、底部和侧边栏。例如,你可以创建一个 `default.jsp` 文件,其中包含你的页面布局。 4. **...

    sitemesh-3.0.0的库和源码

    - **更强大的过滤器**:在Servlet容器中,Sitemesh 使用过滤器拦截请求和响应,增强了对页面装饰的控制。 - **API改进**:提供了更为简洁、易于使用的API,便于开发者进行定制和扩展。 - **性能优化**:相比之前的...

    jsp 页面框架sitemesh 全面帮助文档及示例

    3. **Sitemesh使用步骤** - **安装与导入**:下载Sitemesh库并将其加入到项目依赖中。 - **配置web.xml**:设置Sitemesh Filter,包括装饰器的配置和默认装饰器的选择。 - **创建装饰器模板**:设计HTML模板,...

    sitemesh的使用方法demo

    通过这个简单的 demo,你可以学习到如何在实际项目中集成和使用 Sitemesh,以提高网站的整体一致性和美观性。同时,Sitemesh 还支持自定义装饰策略、多装饰器应用、动态装饰等功能,可以根据项目需求进行深入研究和...

    sitemesh使用教程

    SiteMesh 是一个开源的 J2EE 页面布局和装饰框架,主要用来解决Web应用程序中的内容与表现层分离的问题。它的设计灵感来源于设计模式中...通过合理地使用SiteMesh,你可以创建出既具有统一风格,又易于维护的Web应用。

    初试sitemesh实现模块简易整合

    3. **使用Spring MVC或Struts2**:如果项目使用了Spring MVC或Struts2等框架,Sitemesh有对应的整合方式,可以更方便地实现页面装饰。 4. **处理Ajax请求**:Sitemesh默认不处理Ajax请求,但可以通过自定义Filter或...

    SiteMesh2.3很全的一个资料

    8. **文档和实例**:在提供的资料中,文档将详细介绍如何安装、配置和使用SiteMesh 2.3,实例则可以帮助初学者快速理解和上手实践。 9. **依赖库(Lib)**:SiteMesh 2.3 包含了运行所需的库文件,确保了在各种环境...

    struts2-sitemesh-plugin-2.2.1.1.jarstruts2

    Sitemesh使用`&lt;decorator&gt;`标签来定义装饰器,以及`&lt;include&gt;`标签来插入页面内容。 **Struts2 Sitemesh插件** `struts2-sitemesh-plugin-2.2.1.1.jar`是Struts2与Sitemesh集成的关键组件。它使得Struts2应用可以...

    sitemesh(example).rar_sitemesh_装修网站java

    - 在需要装饰的页面上,可以使用特殊的注释(例如 `&lt;@sitemesh.page&gt;`)来指定页面内容应插入到布局的哪个部分。 - SiteMesh 提供了一些自定义选项,比如通过 `decorators.xml` 文件来指定哪些页面使用哪种布局,...

    sitemesh-2.3.zip

    在 `sitemesh-2.3.zip` 文件中,包含了该框架的源码、文档、构建文件以及库文件,便于我们了解和使用 Sitemesh。 1. **构建文件** - `build.properties`: 这是一个属性文件,包含了构建过程中的配置参数,如版本...

    sitemesh-2.2.1.rar

    2. **过滤器机制**:Sitemesh使用Servlet过滤器来拦截HTTP请求,对响应内容进行处理。当用户请求一个页面时,Sitemesh过滤器会捕获这个请求,然后应用装饰模板。 3. **模板语言**:Sitemesh支持多种模板语言,包括...

    SiteMesh v2.4.1(full).zip

    7. **API 使用**:在 `sitemesh-2.4.1.jar` 文件中,包含了 SiteMesh 的核心 API,开发者可以通过编程方式控制 SiteMesh 的行为,如手动触发装饰过程或获取当前装饰状态。 8. **文档与示例**:通常,完整的 ...

    Sitemesh例子分享

    **Sitemesh使用** 1. **标记可装饰页面**:在要装饰的JSP或HTML页面中,使用`&lt;@sitemesh.page&gt;`指令标签来标记页面,让Sitemesh知道这个页面需要被装饰。 2. **自定义装饰规则**:可以通过配置文件(通常为`...

    sitemesh 讲解ppt

    SiteMesh 使用装饰器(Decorator)模式来实现其功能。装饰器模式允许在不修改原有对象的情况下,为对象添加新的行为或属性。在 SiteMesh 中,装饰器页面是包含页面布局和通用元素的模板,比如页头、页脚和侧边栏。当...

    SiteMesh-SpringMVC-Mybatis

    通过使用 SiteMesh,可以将页面的头部、底部、侧边栏等公共部分抽取出来,作为模板,然后在每个页面中应用这个模板,从而保持网站的整体风格一致。SiteMesh 使用过滤器(Filter)来拦截HTTP请求和响应,将页面内容与...

Global site tag (gtag.js) - Google Analytics