`

sitemesh学习笔记(1)

阅读更多

(一)简介

OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,
能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。

 

(二)原理

SiteMesh是基于Servlet的filter的,即过滤流。它是通过截取response,并进行装饰后再交付给客户。其中涉及到两个名词: 装饰页面(decorator page)和 "被装饰页面(Content page)" , 即 SiteMesh通过对Content Page的装饰,最终得到页面布局和外观一致的页面,并返回给客户
(三)与freemarker的比较:
用sitemesh 的话。你的某个action生成的页面,只要是局部就可以。比如生成一个数据
显示的table,外面的html, header, footer这些都交给sitemesh 去装饰了;
如果用freemarker的话。你的某个action生成的页面需要关注的是整个html, 
只是你把header, footer, sidebar 这些抽取出来了而已
(四)使用步骤:
把握几个要点:jar, 过滤器配置,装饰器描述文件(decorators.xml),模板文件,标签引入,
测试页面
1. 下载并导入jar包:sitemesh-2.4.2.jar
2.  在web.xml中配置sitemesh过滤器:
<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>
        <dispatcher>FORWARD</dispatcher> 
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
 
3. 在web-inf下(默认)创建装饰器描述文件:decorators.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<decorators>  
 <!-- 不需要过滤的请求 -->  
 <excludes>  
  <pattern>/static/*</pattern>  
  <pattern>/remote/*</pattern>  
 </excludes>  
 <!-- 定义装饰器要过滤的页面 -->  
 <decorator name="default" page="/decorators/default.jsp">  
  <pattern>/*</pattern>  
 </decorator>  
</decorators>  
如上,定义了一个叫default的装饰器,对应的模板文件在web-root的decorators目录下,叫做default.jsp、
1)一个decorator 节点定义了一个装饰器,通过pattern指定要拦截的URL
2)excludes节点指定要排除的URL
 
 
4. 创建装饰器模板页面default.jsp,路径同decorators.xml指定的一致
 
 
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib prefix="sitemesh"
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<html>
<head>
<title>SiteMesh示例主页面-<sitemesh:title /></title>
<sitemesh:head />
</head>
<body>
    <%@ include file="header.jsp"%>
    <div id="content">
        <sitemesh:body />
    </div>
    <%@ include file="footer.jsp"%>
</body>
</html>
sitemesh中常用的三种标签
<前缀:title>:插入原始页面(被包装页面)的title标签中的内容,还可以添加一个缺省值
<前缀:head>:插入原始页面(被包装页面)的head标签中的内容(不包括head标签本身)。
<前缀:body>:插入原始页面(被包装页面)的body标签中的内容
 
 
5. 在建立被装饰页面供测试
 
1)webroot中创建一个index页面
<%@ 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>sitemesh测试</title>
</head>
<body>
我的第一个JFinal程序
</body>
</html>
 
2)webroot下的static目录也创建一个index页面
<%@ 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>  
 
    <title>有人拦截我吗?</title>  
  </head>  
  <body>  
    有人拦截我吗?  
  </body>  
</html>  
 
6. 测试
1)访问webroot中的测试页面index.jsp,sitemesh过滤器会为index.jsp自动插入header和footer部分(当然访问其他页面也一样,只要被拦截)
2)访问static下的index.jsp,发现只有Index页面本身的部分,header和footer不会插入,因为在decorators.xml中被过滤了

分享到:
评论

相关推荐

    SiteMesh教程及SiteMesh官方文档翻译

    ### SiteMesh教程及SiteMesh官方文档翻译 #### 使用SiteMesh简化网页布局 SiteMesh是一款用于Web应用程序中的页面布局和装饰的框架。它采用Decorator模式,通过过滤器(filter)拦截请求和响应,将不同的页面组件...

    java sitemesh 页面框架

    Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并...学习和掌握Sitemesh能让你在开发Java Web应用时更加得心应手,提升项目的整体质量和用户体验。

    sitemesh

    1. **一致性**:确保网站所有页面都遵循统一的设计风格。 2. **易维护**:修改母版页面即可更新全局样式,减少了重复工作。 3. **模块化**:易于添加、修改和重用页面组件。 4. **可扩展性**:支持与其他模板引擎...

    siteMesh demo+文档

    1. **安装SiteMesh**:这通常包括下载SiteMesh的库文件,将其添加到你的项目构建路径中(例如,如果你使用Maven,可以在pom.xml中添加对应的依赖)。 2. **配置SiteMesh**:在web.xml中配置SiteMesh Filter是必要的...

    sitemesh框架简单例子

    通过深入学习和实践这个“sitemesh框架简单例子”,你将能够熟练地运用Sitemesh来构建更加专业且美观的Web应用。 总的来说,Sitemesh是一个强大且灵活的工具,它简化了Web页面布局的管理,让开发者能够专注于业务...

    sitemesh框架学习

    但是这些方法out了,学习了sitemesh之后你就会发现在页面中的头部和底部自动导入;这才是真技术。像frame、iframe只适合后台框架,include适合前台,不可能100个页面都用include。所以sitemesh是你最好的选择,把源...

    SiteMesh

    1. **集成SiteMesh**: 将SiteMesh的JAR文件添加到项目类路径中,并在Web应用的`web.xml`中配置SiteMesh过滤器。 2. **创建布局文件**: 设计并创建一个HTML布局模板,定义页面的结构和样式。 3. **配置SiteMesh**: ...

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

    1. **添加Sitemesh依赖**:首先,你需要在项目的构建路径中引入Sitemesh的库。这通常可以通过Maven或Gradle来完成,或者直接下载jar包添加到项目类路径下。 2. **配置web.xml**:在`WEB-INF/web.xml`中,我们需要...

    sitemesh入门demo

    这个demo是基于博主的**Sitemesh入门和使用笔记**,提供了对应的源码供学习者实践和参考。以下是关于Sitemesh的详细讲解: 1. **安装与配置** - 首先,你需要将Sitemesh的JAR文件添加到你的项目类路径中。这可以...

    sitemesh-2.2.1.jar sitemesh-2.2.1.jar

    1. 当用户请求一个Web页面时,Sitemesh会捕获这个请求。 2. 它会分析请求的URL,判断是否需要进行装饰处理。 3. 如果需要,Sitemesh会先执行原始JSP或Servlet,获取内容页面的HTML输出。 4. 接着,Sitemesh会将这个...

    sitemesh3官方下载包

    通过分析和运行这些示例,开发者可以快速理解和学习如何配置和使用Sitemesh3进行页面装饰。 4. **配置说明**:这部分通常是一份文档,详细解释了如何配置Sitemesh3以适应不同的Web应用环境。它可能包括XML配置文件...

    SITE MESH学习笔记

    SiteMesh 是一个强大的网页布局和装饰框架,它的主要目的是为了分离网页的内容(content)和页面结构...通过学习和熟练使用SiteMesh,开发者可以更好地组织和管理页面结构,提升用户体验,同时降低维护成本。

    sitemesh3-demo

    【sitemesh3-demo】是一个基于Sitemesh3框架的示例项目,旨在展示如何在Web应用程序中有效地...通过学习和分析这些文件,你可以更深入地理解Sitemesh3的工作原理和使用方法,进一步提升你在Web开发中的布局和美化能力。

    sitemesh例子

    1. **下载 Sitemesh**:首先从官方仓库或者 Maven 仓库下载 Sitemesh 的 JAR 包,将其添加到项目的类路径中。 2. **配置 web.xml**:在你的 `WEB-INF/web.xml` 文件中,添加 Sitemesh 过滤器配置。这通常包括以下...

    springMVC与sitemesh的结合

    1. **Sitemesh的引入**:首先,我们需要在项目中引入Sitemesh的依赖。这通常通过在Maven的pom.xml文件中添加Sitemesh的依赖项来完成。这样,Sitemesh库就可以被包含在项目的类路径中。 2. **配置Sitemesh**:接下来...

    sitemesh学习资料

    SiteMesh 是一个开源的网页布局和装饰框架,主要用于Java Web应用程序,它可以帮助开发者实现页面的统一外观和感觉,以及提供了...对于希望优化Web应用界面设计和管理的开发者来说,学习和掌握SiteMesh是非常有价值的。

    sitemesh.jar包

    sitemesh.jar包 sitemesh.jar 包sitemesh.jar 包sitemesh.jar包

Global site tag (gtag.js) - Google Analytics