SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。

它通过对所有的用户请求进行过滤,并对服务器向客户端响应也进行过滤,从而给原始的服务器响应加入一定的装饰,可以是header、footer等,然后将经过装饰后的页面送回浏览者。对于被装饰的页面而言,它无需知道自身被谁装饰,也无从知道自身被谁装饰。

SiteMesh通过配置文件来配置指定的装饰器,用于过滤某些页面,则该装饰器会装饰这些页面,从而提供更好的页面效果,通过SiteMesh的页面装饰,可以提供更好的代码复用,所有的页面装饰效果耦合在目标页面中,无需使用include指令来显式包含装饰效果,目标页面与装饰页面完全分开。提供更好的解耦,而且可以在应用中所有的页面都使用相同的装饰页面,整个Web应用会有更统一的风格,会提供更好的整体效果。

SiteMesh通过Filter来截取request和response,然后给原始的页面加入一定的装饰,再把结果返回给客户端。

使用SiteMesh的步骤:

1、maven引入:

<dependency>
    <groupId>opensymphony</groupId><artifactId>sitemesh</artifactId><version>2.4.2</version>
</dependency>

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>
</filter-mapping>

3、在WEB-INF中创建decorators.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/layouts/">  <!-- 不需要过滤的请求 -->  <excludes>  <pattern>/static/*</pattern>  <pattern>/remote/*</pattern>  </excludes>  <!-- 定义装饰器要过滤的页面 -->  <decorator name="default" page="default.jsp">  <pattern>/*</pattern>  </decorator>
</decorators>  

1、在decorator标签的page属性是指向的jsp装饰页面,下面拦截的/*是真正的普通页面,要被page指定的页面所修饰,修饰页面就是写了一堆SiteMesh的标签,然后将pattern标签上url拦截到的被装饰页面的对应装饰页面标签的head和body提取过来填充到装饰页面中。

2、excludes标签下配置的是不需要拦截忽略的url。

3、可以不需要使用<pattern>进行拦截被装饰页面,可使用meta进行拦截<meta name="xxx" content="xxx" />

引入了SiteMesh标签:

<sitemesh:title /> 会自动替换为被过滤页面的title。

<sitemesh:head /> 会把被过滤页面head里面的东西(除了title)放到这里。

<sitemesh:body /> 被过滤的页面的body内容会放到这里。

sitemesh 2.4相关推荐

  1. SiteMesh介绍

    1. SiteMesh简介 SiteMesh是由一个基于Web页面布局.装饰以及与现存Web应用整合的框架.它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的bann ...

  2. Struts和Sitemesh整合,实现多个装饰器

    2019独角兽企业重金招聘Python工程师标准>>> web.xml配置 <filter><filter-name>struts-prepare</f ...

  3. sitemesh排除装饰action的心得

    sitemesh装饰模式的强大就不用说了,但使用过程中遇到的最郁闷的莫过于排除装饰action的困扰了,例如使用某个ajax请求要求返回不装饰的数据,但sitemesh却死活给你装饰了,以前用了个小技 ...

  4. Sitemesh排除Exclude不装饰特定页面的解决办法

    有时候项目中有些文件不需要Sitemesh装饰,例如Error.htm, Error.jsp, OnlineHelp.htm等等.但是用Sitemesh的Exclude不管用,用Printable也不 ...

  5. sitemesh的使用

    由于最近项目的原因,接触到了sitemesh. SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态 ...

  6. sitemesh官网简介,安装配置教程。(非常适合新手)

    新手一枚,最近研究openfire,看到网上资料其页面布局用的是sitemesh,第一次听说,上网查了好多资料,也看了好多博客介绍,觉得好神奇的技术(高手勿喷).不过我也很好奇现在和sitemesh类 ...

  7. SiteMesh:一个优于Apache Tiles的Web页面布局、装饰框架

    一.SiteMesh项目简介 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration) 的框架组件,能够帮助网站开发人员较 ...

  8. struts2.2.1关于sitemesh和freemarker整合的细节

    http://nighty.iteye.com/blog/788241 有段时间没有使用struts2了,上了官网发现已经更新到2.2.1版本,没有细看note,照着以前老的方式配置web.xml,发 ...

  9. Struts2整合SiteMesh

    http://takeme.iteye.com/blog/1716488 1.导入Struts2的jar 和 sitemesh.jar 和 Struts2-sitemesh-plugin.jar  c ...

  10. 使用sitemesh建立复合视图 - 1.hello

    http://docs.huihoo.com/java/sitemesh/ (作者:chen-neu ,提供给 huihoo.com 发布) 使用sitemesh建立复合视图 - 1.hello  & ...

最新文章

  1. 效果很好的asp.net的数据库访问模型(优化,封装一体化)
  2. html中列表的嵌套
  3. “积水上报”广获好评 畅移信息接棒 “互联网+政务”落地
  4. 【Machine Learning】机器学习の特征
  5. flaming pear flood中文版
  6. mqtt客户端_初次接触MQTT
  7. Linux / argv、environ 和 env 的联系
  8. tornado数据库迁移
  9. Nginx 0.8.5版本access.log日志分析shell命令
  10. Rails Minitest style 指南
  11. 比特币市值占比达到年内高点
  12. MyMathLib系列(行列式计算2)
  13. VS2017 启动调试出现 无法启动程序“http://localhost:15613” 操作在当前状态中是非法的。 同时附加进程也是错误的解决方法
  14. 开课吧课堂:数据可视化的制作方法与准则有哪些?
  15. 备忘录模式--如果再回到从前
  16. 计算机网络 中国大学MOOC 哈尔滨工业大学 习题答案
  17. Hyperledger Fabric Service Discovery CLI(服务发现命令行工具)学习笔记
  18. 珠海实验室通风系统建设安装说明
  19. 【编程实践】为了带你搞懂RPC,我们手写了一个RPC框架
  20. 所有系统如何创建宽带连接服务器,Win7系统怎么建立宽带连接?Win7宽带连接的设置方法...

热门文章

  1. 生产订单管理系统软件哪家好?
  2. Matlab读取显示图像顺序
  3. swift 第三方库SwiftyJSON
  4. Fireworks-CS5入门到高级129讲视频教程
  5. Android 7.0后SettingProvider ContactsProvider TelephonyProvider MediaProvider数据库位置
  6. php 制作通讯录,PHP 制作通讯录(五)
  7. 计算机一级要注意什么保存,计算机一级考试重点及注意事项
  8. sbt启动机制、配置优化及与Intellij IDEA的集成
  9. 可视化指标计算公式_基于OTU的alpha多样性指数计算和可视化
  10. APUE 第四章总结