`
limuquan
  • 浏览: 101664 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

SiteMesh在JSP中页面装饰

阅读更多

转自:http://javauu.com/thread-36-1-1.html

、SiteMesh在JSP中页面装饰

一、SiteMesh在JSP页面中使用
通常情况下,在一个工程中,我们不得不使用include标签在每个jsp页面中来包含各种header, stylesheet, scripts, footer。现在,在sitemesh的帮助下,不需要在每个页面中使用include标签,并可实现相同效果。

二、SiteMesh在JSP页面中使用实例
接下来,完成一个SiteMesh与JSP结合的实例,并且添加打印装饰。


  • 将sitemesh-2.3.jar放 到 [web-app]/WEB-INF/lib目录下;
  • 在[web-app]/WEB-INF/新建一个decorators.xml文件,包含以下内容:
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <decorators defaultdir="/decorators">  
    3.     <!-- 此处用来定义不需要过滤的页面 -->  
    4.     <excludes>  
    5.      <!-- 过滤掉error.jsp页面 -->  
    6.      <pattern>/error.jsp</pattern>  
    7.     </excludes>  
    8.   
    9.  <!-- 用来定义装饰器要过滤的页面 -->  
    10.     <decorator name="main" page="main.jsp">  
    11.         <pattern>/*</pattern>  
    12.     </decorator>  
    13.  <!-- 用来定义装饰器要过滤的打印页面 -->  
    14.     <decorator name="printable1" page="printable1.jsp"/>  
    15. </decorators>  
    <?xml version="1.0" encoding="utf-8"?>
    <decorators defaultdir="/decorators">
        <!-- 此处用来定义不需要过滤的页面 -->
        <excludes>
         <!-- 过滤掉error.jsp页面 -->
         <pattern>/error.jsp</pattern>
        </excludes>
    
     <!-- 用来定义装饰器要过滤的页面 -->
        <decorator name="main" page="main.jsp">
            <pattern>/*</pattern>
        </decorator>
     <!-- 用来定义装饰器要过滤的打印页面 -->
        <decorator name="printable1" page="printable1.jsp"/>
    </decorators>
  • 在/WEB-INF/新建一个sitemesh.xml文件,包含内容如下:
    1. <sitemesh>  
    2.  <property name="decorators-file" value="/WEB-INF/decorators.xml" />  
    3.  <excludes file="${decorators-file}" />  
    4.  <!-- Page Parsers :负责读取stream的数据到一个Page对象中以被SiteMesh解析和操作。-->  
    5.  <page-parsers>  
    6.  <parser default="true"  
    7.  class="com.opensymphony.module.sitemesh.parser.DefaultPageParser" />  
    8.  <parser content-type="text/html"  
    9.  class="com.opensymphony.module.sitemesh.parser.FastPageParser" />  
    10.  <parser content-type="text/html;charset=utf-8"  
    11.  class="com.opensymphony.module.sitemesh.parser.FastPageParser" />  
    12.  </page-parsers>  
    13.   
    14.  <decorator-mappers>  
    15.  <!-- 可打印的装饰器,可以允许你当用http://localhost/test.html?printable=true方式访问时给出原始页面以供打印 -->  
    16.  <!-- 其中printable1 与 decorators.xml中的装饰器printable1一致进行映射,若不添加此段,默认为printable -->  
    17.  <mapper  
    18.  class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">  
    19.  <param name="decorator" value="printable1" />  
    20.  <param name="parameter.name" value="printable" />  
    21.  <param name="parameter.value" value="true" />  
    22.  </mapper>  
    23.  <mapper  
    24.  class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">  
    25.  <param name="config" value="${decorators-file}" />  
    26.  </mapper>  
    27.  </decorator-mappers>  
    28. </sitemesh>  
    <sitemesh>
     <property name="decorators-file" value="/WEB-INF/decorators.xml" />
     <excludes file="${decorators-file}" />
     <!-- Page Parsers :负责读取stream的数据到一个Page对象中以被SiteMesh解析和操作。-->
     <page-parsers>
     <parser default="true"
     class="com.opensymphony.module.sitemesh.parser.DefaultPageParser" />
     <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>
     <!-- 可打印的装饰器,可以允许你当用http://localhost/test.html?printable=true方式访问时给出原始页面以供打印 -->
     <!-- 其中printable1 与 decorators.xml中的装饰器printable1一致进行映射,若不添加此段,默认为printable -->
     <mapper
     class="com.opensymphony.module.sitemesh.mapper.PrintableDecoratorMapper">
     <param name="decorator" value="printable1" />
     <param name="parameter.name" value="printable" />
     <param name="parameter.value" value="true" />
     </mapper>
     <mapper
     class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
     <param name="config" value="${decorators-file}" />
     </mapper>
     </decorator-mappers>
    </sitemesh>
  • 在[web-app]/WEB-INF/web.xml添加以下内容:
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app id="WebApp_ID" version="2.4"  
    3.  xmlns="http://java.sun.com/xml/ns/j2ee"  
    4.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    5.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]">  
    6.  <display-name>SiteMeshDemoL2</display-name>  
    7.  <filter>  
    8.  <filter-name>sitemesh</filter-name>  
    9.  <filter-class>  
    10.  com.opensymphony.module.sitemesh.filter.PageFilter   
    11.  </filter-class>  
    12.  </filter>  
    13.   
    14.  <filter-mapping>  
    15.  <filter-name>sitemesh</filter-name>  
    16.  <url-pattern>/*</url-pattern>  
    17.  </filter-mapping>  
    18.  <welcome-file-list>  
    19.  <welcome-file>index.jsp</welcome-file>  
    20.  </welcome-file-list>  
    21. </web-app>  
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="2.4"
     xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]">
     <display-name>SiteMeshDemoL2</display-name>
     <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>
  • 在[web-app]下创建一个decorators文件夹,在该文件下再创建一个装饰页面main.jsp,包含以下内容:
    1. <%@ page language="java" contentType="text/html; charset=utf-8"  
    2.     pageEncoding="utf-8"%>  
    3. <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6.  <head>  
    7.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    8.  <title><decorator:title default="默认title"/>--javauu.com</title>  
    9.  <decorator:head/>  
    10.  </head>  
    11.     
    12.  <body>  
    13.    <div id="header"><jsp:include page="header.jsp" flush="true"/></div>  
    14.    <div id="body"><decorator:body /></div>  
    15.    <p><small>(<a href="?printable=true">printable version</a>)</small></p>  
    16.    <div id="footer"><jsp:include page="footer.jsp" flush="true"/></div>  
    17.  </body>  
    18. </html>  
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title><decorator:title default="默认title"/>--javauu.com</title>
     <decorator:head/>
     </head>
     
     <body>
       <div id="header"><jsp:include page="header.jsp" flush="true"/></div>
       <div id="body"><decorator:body /></div>
       <p><small>(<a href="?printable=true">printable version</a>)</small></p>
       <div id="footer"><jsp:include page="footer.jsp" flush="true"/></div>
     </body>
    </html>
  • 在decorators文件夹下再创建一个装饰页面printable1.jsp,包含以下内容:
    1. <%@ page language="java" contentType="text/html; charset=utf-8"  
    2.     pageEncoding="utf-8"%>  
    3. <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>  
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    5. <html>  
    6.  <head>  
    7.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    8.  <title><decorator:title default="默认title"/>--javauu.com</title>  
    9.  <decorator:head/>  
    10.  </head>  
    11.     
    12.  <body>  
    13.    <h5>这是要打印的装饰页面,去掉header,footer</h5>  
    14.    <div id="body"><decorator:body /></div>  
    15.    <h5>打印...</h5>  
    16.  </body>  
    17. </html>  
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title><decorator:title default="默认title"/>--javauu.com</title>
     <decorator:head/>
     </head>
     
     <body>
       <h5>这是要打印的装饰页面,去掉header,footer</h5>
       <div id="body"><decorator:body /></div>
       <h5>打印...</h5>
     </body>
    </html>
  • 在decorators文件夹下再创建一个用于被装饰页面包含的header.jsp和footer.jsp,分别包含以下内容:
    1. <%@ page language="java" contentType="text/html; charset=utf-8"  
    2.     pageEncoding="utf-8"%>  
    3. <h1>全局统一header</h1>  
    4. <h2>好久没有人把牛皮吹的这么清新脱俗了!</h2>  
    5. <hr />  
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <h1>全局统一header</h1>
    <h2>好久没有人把牛皮吹的这么清新脱俗了!</h2>
    <hr />
    1. <%@ page language="java" contentType="text/html; charset=utf-8"  
    2.     pageEncoding="utf-8"%>  
    3. <hr />  
    4. <h1>全局统一footer</h1>  
    5. <h2>爸爸今天打了我两次,第一次是因为看见了我手里两分的成绩单,第二次是因为成绩单是他小时候的。</h2>  
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <hr />
    <h1>全局统一footer</h1>
    <h2>爸爸今天打了我两次,第一次是因为看见了我手里两分的成绩单,第二次是因为成绩单是他小时候的。</h2>
  • 在[web-app]下创建被装饰页面index.jsp,包含以下内容:
    1. <%@ page language="java" contentType="text/html; charset=utf-8"  
    2.     pageEncoding="utf-8"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <html>  
    5. <head>  
    6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    7. <title>index</title>  
    8. </head>  
    9. <body>  
    10.  <h1>被装饰过的首页</h1>  
    11.  <h2><a href="result.jsp">点击我</a>跳转到被装饰过结果页面!</h2>  
    12.  <h2><a href="error.jsp">点击我</a>跳转到被排除装饰的错误页面!</h2>  
    13.  <h2>有两个人掉到陷阱里了,死的人叫死人,活人叫什么? <a href="answer.jsp">答案</a></h2>  
    14. </body>  
    15. </html>  
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>index</title>
    </head>
    <body>
     <h1>被装饰过的首页</h1>
     <h2><a href="result.jsp">点击我</a>跳转到被装饰过结果页面!</h2>
     <h2><a href="error.jsp">点击我</a>跳转到被排除装饰的错误页面!</h2>
     <h2>有两个人掉到陷阱里了,死的人叫死人,活人叫什么? <a href="answer.jsp">答案</a></h2>
    </body>
    </html>
  • 在[web-app]下创建被装饰页面error.jsp,包含以下内容:
    1. <%@ page language="java" contentType="text/html; charset=utf-8"  
    2.     pageEncoding="utf-8"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <html>  
    5.  <head>  
    6.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    7.  <title>error</title>  
    8.  </head>  
    9.   
    10.  <body>  
    11.  <h1>错误页面!!!</h1>  
    12.  <h2>珍惜生活——上帝还让你活着,就肯定有他的安排。</h2>  
    13.  </body>  
    14. </html>  
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title>error</title>
     </head>
    
     <body>
     <h1>错误页面!!!</h1>
     <h2>珍惜生活——上帝还让你活着,就肯定有他的安排。</h2>
     </body>
    </html>
  • 在[web-app]下创建被装饰页面answer.jsp,包含以下内容:
分享到:
评论

相关推荐

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

    - **标记内容页面**:在需要被装饰的JSP页面中,使用特殊的指令或标签来指示Sitemesh如何处理内容。 4. **示例资源** - **sitemesh资料整理.chm**:这可能是一个包含Sitemesh详细信息的CHM帮助文件,提供了框架的...

    JSP布局框架SiteMesh.zip

    SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大 量页面构成的...

    springmvc+mybatis+ehcache+jsp+sitemesh完美运行

    它可以帮助开发者轻松地定义网站的全局布局,如页眉、页脚和侧边栏等,而无需在每个单独的JSP页面中重复编写相同的代码。Sitemesh通过拦截请求并应用模板来增强原有的页面内容,从而实现整体的页面装饰效果。 这五...

    sitemesh装饰器入门

    在需要被装饰的 JSP 页面中,我们需要添加一些特定的标记来指示 Sitemesh 如何处理页面。例如,在每个 JSP 页面的顶部添加以下行: ```jsp &lt;%@ taglib prefix="s" uri="http://www.opensymphony.com/sitemesh/...

    sitemesh网页组合框架 demo

    **Sitemesh网页组合框架** 是一个开源的Java Web应用程序框架,主要用于网页布局和装饰。它的核心功能是帮助开发者统一网站的外观和感觉,通过自动应用页面模板来增强Web应用程序的界面一致性。在传统的Web开发中,...

    siteMesh demo+文档

    4. **应用装饰**:通过在JSP页面中使用特殊的注解(例如`&lt;@sitemesh/page&gt;`),或者在Servlet中使用`PageDecorator`接口,可以指示SiteMesh对哪些页面进行装饰。 5. **自定义装饰策略**:如果你的项目有特殊需求,...

    sitemesh

    `tiny-panel.html` 可能是一个小的面板或侧边栏组件,而 `toggledecorator.jsp` 则可能是一个用于切换装饰效果的JSP页面,允许用户在不同装饰风格间自由切换。 使用Sitemesh有以下几个优点: 1. **一致性**:确保...

    java sitemesh 页面框架

    2. **选择装饰器**:根据请求的URL或者在代码中明确指定,Sitemesh会选择一个合适的装饰器(Decorator)模板。 3. **内容分离**:装饰器模板通常包含固定的部分,如页头、页脚、侧边栏等,而用户请求的实际内容被...

    SiteMesh教程.pdf

    在JSP页面中使用SiteMesh的标签库,如和,用于插入页面的头部和主体内容。SiteMesh也允许装饰器从实际页面提取标题,然后显示在页面的头部。 ***Mesh与其他技术的整合: SiteMesh可以与多种JSP标签库、模板引擎以及...

    sitemesh jar包机tld文件

    这两个tld文件让开发者可以方便地在JSP页面中使用SiteMesh的自定义标签,进行页面布局和装饰操作。 下面详细解释这两个tld文件的用途: 1. `sitemesh-page.tld`: 这个文件定义了一个名为`&lt;decorator:page&gt;`的标签...

    sitemesh简单教程页面装配器

    传统的Web开发中,开发者往往需要在每个JSP页面中不断地使用`include`标签来嵌入头部(header)、脚部(footer)等公共元素,这样的做法虽然能够实现一定的代码复用,但在维护和扩展性方面存在较大的问题。例如,一旦...

    分享一个freemarker sitemesh jsp ext整合的完整项目

    在整合项目中,JSP Ext可以帮助简化JSP页面的编写,提高可读性和维护性。 5. **后端控制**:在Java后端,你需要创建控制器(如Spring MVC的Controller或者Servlet)来处理请求,准备数据模型,并将模型传递给...

    SiteMesh教程及SiteMesh官方文档翻译

    当用户访问`/index.jsp`时,SiteMesh会自动使用之前定义的装饰器页面对其进行装饰,从而呈现出完整的页面布局。 #### Sitemesh对于性能的影响 为了评估SiteMesh对Web应用程序性能的影响,进行了一系列的测试。 **...

    SiteMesh

    4. **标记页面内容**: 在需要装饰的JSP或HTML页面中添加特殊的SiteMesh注释或标签,告知SiteMesh如何插入到布局文件中。 5. **运行应用**: 启动服务器,SiteMesh会自动处理所有符合配置规则的请求,将页面内容与...

    spring jsp freemaker sitemesh

    当用户请求JSP页面时,服务器会将其转换为Servlet,并执行其中的Java代码,然后将结果返回给客户端。JSP的优势在于其与HTML的紧密集成,使得开发人员可以快速地构建交互式的Web界面。 **FreeMarker** FreeMarker是...

    siteMesh使用示例

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

    sitemesh2.5源码

    Sitemesh2的核心功能之一就是JSP装饰,这是一种设计模式,用于在不修改已有页面的情况下,为其添加统一的头部、尾部或者侧边栏等元素。装饰模式允许我们定义一个装饰器页面(通常是包含通用布局的模板),并在运行时...

    sitemesh 例子

    在这个JSP页面中,`&lt;s:property value="content" /&gt;`会被Sitemesh替换为装饰器中的`${page.content}`。 在压缩包文件"testgit"中,可能包含了实际的项目源码,如Sitemesh的配置文件、装饰器模板、以及使用Sitemesh...

    sitemesh3官方下载包

    **Sitemesh3** 是一个开源的网页布局和装饰框架,用于Java Web应用程序。它主要目的是帮助开发者统一网站的外观和感觉,通过提供一种简单的方式来装饰(或模板化)整个Web应用中的页面。Sitemesh3是Sitemesh项目的第...

Global site tag (gtag.js) - Google Analytics