sitemesh的使用

简介:

由于最近项目的原因,接触到了sitemesh。

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

     SiteMesh设计思想是,用户发送request至服务器,服务器根据此request生成动态数据,生成网页,准备返回给客户端。就在返回前,SiteMesh进行拦截,对此网页进行解析,将title、body等部分拆解出来,套上模板后,再返回给客户端。由于SiteMesh在返回客户端的最后一步工作,此时的网页已经具备了标准的html网页格式,因此SiteMesh只需解析标准的html网页,无需考虑各个Web应用是应用了JSP、ASP,还是Velocity技术,相当灵活。

     SiteMesh使用了Decorator的设计模式。

下面我就用一个通俗易懂的例子告诉大家怎么使用它。


这个就是我这个项目的结构,jsp页面都可以随意放只要指明路径就可以了,decorators.xml放在WEB-INF下面。
首先是decorators.xml的书写:

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <decorators defaultdir="/decorators">  
  3.     <!-- 用第一套模板 -->  
  4.     <decorator name="basic-theme" page="basic-theme.jsp">  
  5.         <pattern>/data/*</pattern>  
  6.     </decorator>  
  7.     <!-- 用第二套模板 -->  
  8.     <decorator name="basic-theme2" page="basic-theme2.jsp">  
  9.         <pattern>/data2/*</pattern>  
  10.     </decorator>  
  11.     <!-- 不做任何装饰 -->  
  12.     <decorator name="none">  
  13.         <pattern>/data3/*</pattern>  
  14.     </decorator>  
  15. </decorators>  


你可以选择你自己的模板在page里面定义,<pattern>里面的是你要作用的页面的路径。
下面是aa.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>jsp</title>  
  6.   </head>  
  7.   <body>  
  8.     我爱中国!  
  9.   </body>  
  10. </html>  

aa2.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>jsp</title>  
  6.   </head>  
  7.   <body>  
  8.     我爱中国2!  
  9.   </body>  
  10. </html>  

aa3.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  3. <html>  
  4.   <head>  
  5.     <title>jsp</title>  
  6.   </head>  
  7.   <body>  
  8.     我爱中国3!  
  9.   </body>  
  10. </html>  

最重要的xml的配置:

加上下面一句

[html]  view plain  copy
 print ?
  1. <!-- 过滤作用,使发送给客户端的页面通过decorator装饰再返回 -->  
  2.  <filter>  
  3.     <filter-name>sitemesh</filter-name>  
  4.     <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>  
  5.  </filter>  
  6.  <filter-mapping>  
  7.     <filter-name>sitemesh</filter-name>  
  8.     <url-pattern>/*</url-pattern>  
  9.  </filter-mapping>  

下面是装饰页面basic-theme.jsp


basic-theme2.jsp


下面来看看效果图:
下面是用了第一个装饰模板的页面图。


下面是用了第二个装饰模板的页面。



下面是没有用装饰模板的页面。


看到这里相信大家应该对sitemesh很期待了吧,赶紧自己去试试吧。这是jar包下载地址。

sitemesh.jar

目录
相关文章
|
开发框架 Java .NET
Sitemesh3使用及配置
Sitemesh3使用及配置
|
Java Spring
15dwr - DWR 与 Spring整合
15dwr - DWR 与 Spring整合
58 0
|
Java PHP
17dwr - DWR 与 Struts整合
17dwr - DWR 与 Struts整合
36 0
|
XML Java 数据格式
|
安全 应用服务中间件
|
容器 应用服务中间件
servlet与filter的加载顺序详解
项目:3个filter,3个servlet,匹配的url路径/hello。   情况1:servlet没加情况(web.xml配置顺序:first filter,second filter,third filter,first servlet,second servlet,thi...
2207 0
sitemesh
Sitemesh 3 的使用及配置 http://www.cnblogs.com/luotaoyeah/p/3776879.html 老版本的: http://blog.csdn.net/bluishglc/article/details/5969905 http://www.blogjava.net/gdufo/archive/2008/08/04/219996.html      ck
1116 0