一、拷贝sitemesh-2.4.1.jar(可以去官网下)到项目中的lib下
二、在web.xml中添加sitemesh的过滤器
<!-- 配置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>
三、在WEB-INF下建一个装饰器配置文件,命名为:decorators.xml,默认与web.xml同级,若改变目录,则需要拷贝sitemesh.xml来进行修改。
四、在web项目中添加一个存放装饰器的文件夹,如decorators,页面见源代码。并在decorators.xml中进行配置,配置如下:
<!-- 排除一些页面不使用模版 --> <excludes> <pattern>/login.jsp</pattern> <pattern>/login/*</pattern> </excludes> <!-- 构造一个模版页面装饰器 --> <decorator name="main" page="main.jsp"> <pattern>/*</pattern> </decorator> <decorator name="page" page="page.jsp"></decorator>
五、部署并运行
拷贝一下网上的资源:
1.Sitemesh简介
Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容,使得它的内容也符合你的页面结构的要求。甚至于它能将HTML文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。所有的这些,都是GOF的Decorator模式的最生动的实现。尽管它是由java语言来实现的,但它能与其他Web应用很好地集成。
从使用角度来看,Tiles似乎是Sitemesh标签<page:applyDecorator>的一个翻版。其实sitemesh最强的一个特性是sitemesh将decorator模式用在过滤器上。任何需要被装饰的页面都不知道它要被谁装饰,所以它就可以用来装璜来自php、asp、CGI等产生的页面了。你可以定义若干个装饰器,根据参数动态地选择装饰器,产生动态的外观以满足你的需求。它也有一套功能强大的属性体系,它能帮助你构建功能强大而灵活的装饰器。相比较而言,在这方面Tiles就逊色许多。
一个请求到服务器后,如果该请求需要sitemesh装饰,服务器先解释被请求的资源,然后根据配置文件获得用于该请求的装饰器,最后用装饰器装饰被请求资源,将结果一同返回给客户端浏览器。
下边是由Jsp和CGI产生的两个页面,它们通过sitemesh装饰后,形成了一致的用户界面。