Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter com.opensymphony.sitemesh.webapp.SiteMeshFilter 核心过滤器 javax.servlet.Filter <filter> <filter-name>sitemeshFilter</filter-name> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter 使用之前需要先从官网 http://wiki.sitemesh.org/wiki/display/sitemesh/Home 下载:decorators.xml 放到web 项目的web-inf 下面 装饰器页面的写法: 需要引入sitemesh jsp标签 <%@ taglib prefix="<em>sitemesh</em>" uri="http://www.opensymphony.com/<em>sitemesh</em> /decorator" %> 那么接下来就可以自定义自己的内容了,常用的有: <sitemesh:title/> <sitemesh:head/> <sitemesh:body/>等。
关于Springmvc中include与Sitemesh装饰器的使用 !!! 以上只是jsp的简单应用,如果是作为装饰器,需要在被包含页面设置值或赋值的时候一定要注意啦,说到装饰器顺便提一下sitemesh(现在是3.0版本),sitemesh是个很好用的装饰器工具, 一个明显的好处是不用像原生 同一类别的页面可以使用同一个装饰页面,当然也可以排除用哪些页面, 目前需要注意到的是sitemesh在大容量页面的装饰的时候会比较耗内存,根据实际项目需求慎重选择~,当然还有其他装饰器也很不错,这里就不一一介绍啦
关于SiteMesh概述 sitemesh的设计思想是装饰者(decorator)设计模式。 SiteMesh使用一个Servlet过滤器,它可以拦截返回的Web浏览器的HTML,提取相关内容,并将其合并到被称为装饰器(Decorator)的模板。 首先看一下SiteMesh的工作过程图: ? 看得出来,SiteMesh使得我们可以不必在每个界面都重复编写相同的模板性元素,而只需要专注于实际需要展示的内容。 官方介绍:http://wiki.sitemesh.org/wiki/display/sitemesh3/SiteMesh+3+Overview 本文转载自:http://nohup.cc
关于Springmvc中include与Sitemesh装饰器的使用 !!! 以上只是jsp的简单应用,如果是作为装饰器,需要在被包含页面设置值或赋值的时候一定要注意啦,说到装饰器顺便提一下sitemesh(现在是3.0版本),sitemesh是个很好用的装饰器工具, 一个明显的好处是不用像原生 同一类别的页面可以使用同一个装饰页面,当然也可以排除用哪些页面, 目前需要注意到的是sitemesh在大容量页面的装饰的时候会比较耗内存,根据实际项目需求慎重选择~,当然还有其他装饰器也很不错,这里就不一一介绍啦
关于Springmvc中include与Sitemesh装饰器的使用 !!! 以上只是jsp的简单应用,如果是作为装饰器,需要在被包含页面设置值或赋值的时候一定要注意啦,说到装饰器顺便提一下sitemesh(现在是3.0版本),sitemesh是个很好用的装饰器工具, 一个明显的好处是不用像原生 同一类别的页面可以使用同一个装饰页面,当然也可以排除用哪些页面, 目前需要注意到的是sitemesh在大容量页面的装饰的时候会比较耗内存,根据实际项目需求慎重选择~,当然还有其他装饰器也很不错,这里就不一一介绍啦
在这个项目上的使用:(sitemesh3的配置可参考本人上篇博客) 1、Maven中引入Sitemesh3 <dependency> <groupId>org.sitemesh</groupId > <artifactId>sitemesh</artifactId> <version>3.0.0</version> </dependency> 2、web.xml中配置sitemesh3过滤器 <filter> <filter-name>sitemesh</filter-name> <filter-class>org.sitemesh.config.ConfigurableSiteMeshFilter org.sitemesh.content.tagrules.html.ExportTagToContentRule; import org.sitemesh.tagprocessor.State; 后续可能不会使用Sitemesh3,可能会用jquery 的load方法。 当然有人说,sitemesh3太折腾了,用iframe不就可以吗?
[344ms] - /display/ds/Confluence+Overview [313ms] - SiteMesh: parsePage: http://localhost:8080/display 在这个 344ms 中,313ms 消耗在了 sitemesh 上。
这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则 Action的输出将不会被装饰。 这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。 ActionContextCleanUp提供了怎么处理这些问题的一些信息。
这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则 Action的输出将不会被装饰。 这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。 ActionContextCleanUp提供了怎么处理这些问题的一些信息。
[344ms] - /display/ds/Confluence+Overview [313ms] - SiteMesh: parsePage: http://localhost:8080/display 在这个 344ms 中,313ms 消耗在了 sitemesh 上。
Confluence 是使用开源的 SiteMesh 库进行构建的,一个 Web 页面布局能够在整个站点中提供完整和一致的外观和布局。 SiteMesh 是通过 'decorators' 进行工作的,这个被定义在页面的布局和结构中。 希望对 Confluence 的布局进行修改,你需要修改这些 decorator 文件。
这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则 Action的输出将不会被装饰。 这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。 ActionContextCleanUp提供了怎么处理这些问题的一些信息。
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent (SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java
<servlet> <servlet-name>sitemesh-freemarker</servlet-name> <servlet-class>com.smics.apps.core.setup.sitemesh.DefaultFreemarkerDecoratorServlet init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>sitemesh-freemarker
这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则 Action的输出将不会被装饰。 这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。 ActionContextCleanUp提供了怎么处理这些问题的一些信息。
/decorator" prefix="decorator"%> <%@ taglib uri="http://www.opensymphony.com/<em>sitemesh</em>/page" prefix="page 就是我们在web.xml配置的过滤器,它的功能就是用来渲染我们的页面的 <%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix ="decorator"%> <%@ taglib uri="http://www.opensymphony.com/<em>sitemesh</em>/page" prefix="page"%> <filter > <filter-name>sitemesh</filter-name> <filter-class>com.opensymphony.module.sitemesh.filter.PageFilter </filter-class> </filter> <filter-mapping> <filter-name>sitemesh</filter-name>
这里以 SiteMesh 举例: 配置一个 url mapping 文件,再在模板上使用 SiteMesh 标签:
druid.version> <ehcache.version>2.6.9</ehcache.version> <ehcache-web.version>2.0.4</ehcache-web.version> <sitemesh.version >2.4.2</sitemesh.version> <activiti.version>5.15.1</activiti.version> <wink.version>1.4</wink.version
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent (SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java
2 .这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh 应用流程注解 当 Web容器收到 请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括(ActionContextCleanUp)过滤器,然后经过Other filters(SiteMesh