- 浏览: 446955 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Luob.:
楼主 你这个问题怎么搞定的
奇异的 Spring WebApplicationContext 自动关闭 -
u013202238:
...
PDF和Java技术(PDFBox) -
u013202238:
...
PDF和Java技术(PDFBox) -
yuan1225:
您好请问 Discuz论坛的系统设置在哪里,登陆后台后没有 ...
Discuz!论坛通行证与JSP网站的整合 -
美妙人生:
,好,太好了,只是还是不太理解!
Discuz!论坛通行证与JSP网站的整合
一、SiteMesh项目简介 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件,能够帮助网站开发人员较容易实现页面中动态内容和静态装饰外观的分离。 Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大 量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的内容,如jsp,php,asp等产生的内容,它也能处理静态的内容,如htm的内容, 使得它的内容也符合你的页面结构的要求。甚至于它能将HTML文件象include那样将该文件作为一个面板 的形式嵌入到别的文件中去。所有的这些,都是GOF的Decorator模式的最生动的实现。尽管它是由java语言来实现的,但它能与其他Web应用很好地集成。 官方:http://www.opensymphony.com/sitemesh/ 下载地址:http://www.opensymphony.com/sitemesh/download.action 目前的最新版本是Version 2.3; 二、为什么要使用SiteMesh? 我们的团队开发J2EE应用的时候,经常会碰到一个比较头疼的问题: 由于Web页面是由不同的人所开发,所以开发出来的界面通常是千奇百怪,通常让项目管理人员苦笑不得。 而实际上,任何一个项目都会要求界面的统一风格和美观,既然风格统一,那就说明UI层肯定有很多可以抽出来 共用的静态或动态部分;如何整合这些通用的静态或动态UI呢?Apache Tiles框架站了出来很好的解决了这一问题, 再加上他与struts的完美集成,导致大小项目都把他作为UI层的首选框架, 但是: Tiles确实有着它很多的不足之处,下文我会介绍,本文想说的是,除了Apache Tiles框架,其实我们还有更好的解 决方案,那就是:SiteMesh; 本文 介绍了一个基于Web页面的布局、装饰以及应用整合的框架Sitemesh,它能帮助你为你的应用创建一致的外观, 很好的取代Apache Tiles; 三、SiteMesh VS Apache Tiles 用过struts的朋友应该对Apache Tiles的不会陌生,我曾经有一篇文章介绍过struts中tiles框架的组合与继承, 现在怎么看怎么觉得复杂; 从使用角度来看,Tiles似乎是Sitemesh标签<page:applyDecorator>的一个翻版。其实sitemesh最强的 一个特性是sitemesh将decorator模式用在过滤器上。任何需要被装饰的页面都不知道它要被谁装饰,所以它就 可以用来装璜来自php、asp、CGI等产生的页面了。你可以定义若干个装饰器,根据参数动态地选择装饰器, 产生动态的外观以满足你的需求。它也有一套功能强大的属性体系,它能帮助你构建功能强大而灵活的装饰器。 相比较而言,在这方面Tiles就逊色许多。 个人觉得在团队开发里面,Apache Tiles框架会导致所有人不仅仅要了解并且清楚Apache Tiles的存在, 并且要特别熟悉每一个Tiles layout模板的作用,否则就可能出现用错模板的情况;除此之外,每个人涉及到 的所有WEB页面都需要去配置文件里面逐个配置,不仅麻烦出错的几率还高; 而以上所有的不足都是SiteMesh所不存在的; 四、SiteMesh的基本原理 一个请求到服务器后,如果该请求需要sitemesh装饰,服务器先解释被请求的资源,然后根据配置文件 获得用于该请求的装饰器,最后用装饰器装饰被请求资源,将结果一同返回给客户端浏览器。 五、如何使用SiteMesh 这里以struts2+spring2+hibernate3构架的系统为例 1、下载SiteMesh 下载地址:http://www.opensymphony.com/sitemesh/download.action 目前的最新版本是Version 2.3; 2、在工程中引入SiteMesh的必要jar包,和struts2-sitemesh-plugin-2.0.8.jar; 3、修改你的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>
注意过滤器的位置:应该在struts2的org.apache.struts2.dispatcher.FilterDispatcher过滤器之前org.apache.struts2.dispatcher.ActionContextCleanUp过滤器之后,否则会有问题; 将其拷贝到/WEB-INF目录下; <property name="decorators-file" value="/WEB-INF/sitemesh/decorators.xml"/> <%@ page language="java" pageEncoding="UTF-8"%> <%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator"%> <%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <% response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); %> <html> <head> <title><decorator:title default="kangxm test" /> </title> <!-- 页面Head由引用模板的子页面来替换 --> <decorator:head /> </head> <body id="page-home"> <div id="page-total"> <div id="page-header"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <div class="topFunc"> 我的账户 | 退出 </div> </td> </tr> </table> </div> </div> <!-- end header --> <!-- Menu Tag begin --> <div id="page-menu" style="margin-top: 8px; margin-bottom: 8px;"> <div> 这里放菜单 </div> </div> <!-- Menu Tag end --> <div id="page-content" class="clearfix"> <center> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <decorator:body /><!-- 这里的内容由引用模板的子页面来替换 --> </td> </tr> </table> </center> </div> <!-- end content --> <div id="page-footer" class="clearfix"> 这里放页面底部 <!-- end footer --> </div> <!-- end page --> </body> </html>
<?xml version="1.0" encoding="ISO-8859-1"?> <decorators defaultdir="/decorators"> <!-- Any urls that are excluded will never be decorated by Sitemesh --> <excludes> <pattern>/index.jsp*</pattern> <pattern>/login/*</pattern> </excludes> <decorator name="main" page="main.jsp"> <pattern>/*</pattern> </decorator> </decorators>
使用sitemesh给我们带来的是不仅仅是页面结构问题,它的出现让我们有更多的时间去关注底层业务 逻辑,而不是整个页面的风格和结构。它让我们摆脱了大量用include方式复用页面尴尬局面,也避免了tiles 框架在团队开发中的复杂度,它还提供了很大的灵活性以及给我们提供了整合异构Web系统页面的一种方案。 |
注:
出处 http://hi.baidu.com/injava/blog/item/13a38445a4c5b53c87947395.html
发表评论
-
jquery 操作checkbox的例子(全选,反选,获取选取值)
2009-05-21 17:17 5284jquery 操作checkbox的例子(全选,反选,获取选取 ... -
struts2 捕获404错误
2008-11-28 22:04 5239当访问一个不存在页面时,一般显示404错误,这是一个很不友好的 ... -
mysql alter 语句用法,添加、修改、删除字段等
2008-11-06 12:15 1608mysql alter 语句用法,添加、修改、删除字段等 / ... -
mysql数据库自动定期备份的脚本
2008-07-30 15:51 2092说明: 保留每天备份的数据是件不太现实的事,做好的做 ... -
CVS的日常使用
2008-07-22 16:50 1485一个项目的首次导入 cvs ... -
Advanced SiteMesh
2008-07-14 11:40 1180假设你打算结合多种技 ... -
Discuz! 数据库结构参考(下)
2008-06-30 09:40 3146Discuz! 数据库结构参考 ... -
Discuz! 数据库结构参考(上)
2008-06-30 09:39 2044Discuz! 数据库结构参考(上) cdb_access-- ... -
mysql 外鍵約束
2008-06-24 10:43 37191. 什么是参照完整性? ... -
mysql4.1以上版本连接时出现Client does not support authentic
2008-06-18 14:05 1270mysql4.1以上版本连接时出现Client does no ... -
Linux下两个不同版本Mysql的安装实战
2008-06-17 12:42 2815http://www.iteye.com/topic/2039 ... -
查看文本文件的编码格式
2008-06-13 17:16 3836Ubuntu enca命令可以用来查看文件的编码格式 安装 ... -
redhat9上用rpm包方式升级gcc3.2到gcc3.4
2008-06-11 09:50 4332刚刚安了个redhat9,发现gcc是3.2版本的,看到有文章 ... -
PHP+apache+mysql编程中乱码问题的解决
2008-06-10 17:20 2249作者: 乐道 2007-11 ... -
修改firefox 3的语言界面
2008-05-14 10:20 4764进入http://releases.mozilla.org/p ... -
Apache虚拟主机设置
2008-04-16 16:50 1884简介:这里说的虚拟主 ... -
Discuz!论坛通行证与JSP网站的整合
2008-04-11 16:43 5812最近做有关JSP与DISCUZ整合,搞了好久,还是搞不定,后来 ... -
PDF和Java技术(PDFBox)
2008-04-10 17:06 14754原文标题:Making PDFs Port ... -
Discuz 通行证的制作方法和详细说明
2008-04-09 17:42 2337通行证是个大题目,说白了也就是如何维护客户的会话,在php中所 ... -
使用Lucene2.3构建搜索引擎
2008-04-03 20:06 2620Lucene不是一个完整的全文索引应用,而是是一个用Java写 ...
相关推荐
Sitemesh 是一个流行的页面布局和装饰框架,它可以为我们的应用程序提供统一的外观和感觉。Tiles2 虽然功能强大,但在某些情况下,Sitemesh 提供了更简单、更轻量级的解决方案。 首先,让我们理解 Spring MVC 和 ...
Java Sitemesh是一个开源的页面布局和装饰框架,它的主要目标是帮助开发者统一网站的外观和感觉,提高代码复用性,并简化页面的复杂性。Sitemesh通过将页面分为内容区域和装饰模板来实现这一目标,使得开发者可以...
Sitemesh是一个非常实用且功能强大的Web页面布局和装饰框架,适用于多种Web应用程序,包括但不限于Java(JSP)、PHP、ASP等技术栈下的应用。它能够有效地帮助开发者统一Web应用的界面风格,确保各个页面具有一致的...
Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大 量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的...
Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大 量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。 它不仅仅能处理动态的...
**Sitemesh** 是一个流行的Java Web开发框架,主要用于页面布局和装饰。它提供了一种简单的方法来管理和美化Web应用程序的界面,通过定义全局的页面布局模板,将内容区域与样式分离,使得开发者可以集中精力处理业务...
SiteMesh 是一个开源的Web应用程序框架,用于帮助开发者在页面级别上实现页面布局和装饰功能。这个框架的主要目的是解决在大型网站中保持页面样式一致性的问题。SiteMesh 2.3 版本是其系列中的一个重要版本,包含了...
**Sitemesh框架详解** ...总结来说,Sitemesh是一款强大的Web布局框架,通过简单的配置和使用,可以使Web应用的页面风格统一,提升用户体验。理解和掌握Sitemesh的配置和使用,对于提升Web开发的专业性和效率至关重要。
**Sitemesh网页组合框架** 是一个开源的Java Web应用程序框架,主要用于网页布局和装饰。它的核心功能是帮助开发者统一网站的外观和感觉,通过自动应用页面模板来增强Web应用程序的界面一致性。在传统的Web开发中,...
页面装饰器(Sitemesh)是一种广泛用于Web应用的开源框架,它的主要功能是提供页面布局和装饰功能,使得开发者可以方便地实现统一的页面头部、尾部、侧边栏等元素,从而提高网站的整体风格一致性。在本实例中,我们...
Sitemesh是一款强大的Web页面布局和装饰框架,它主要用于帮助开发者实现网站的统一外观和感觉。这个框架的主要功能是将页面的主体内容与页眉、页脚、侧边栏等通用部分分离,使得在大量网页中保持一致的设计风格变得...
`sitemesh`是一个开源的Web应用程序装饰框架,主要用于处理Web页面布局和外观。它可以帮助开发者统一网站的风格,通过将内容与页面布局分离,使得网页设计更加模块化,易于维护。在给定的博文链接中,虽然没有直接的...
SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. sitemesh应用Decorator模式,用filter截取request和response,把页面组件head,content,...
SiteMesh 是一个开源的Web应用程序框架,主要用于帮助开发者实现页面布局和装饰功能。它通过拦截HTTP请求,将页面内容与布局模板相结合,从而提供了一种简单有效的方式来管理和控制Web应用的外观和感觉。在Web开发中...
jqueryui界面框架_sitemesh布局框架
Sitemesh 是一个开源的 Web 应用程序框架,它主要用来帮助开发者实现页面布局和装饰功能。Sitemesh 的核心概念是“装饰器”,这个概念源自于软件设计模式中的装饰者模式。通过使用 Sitemesh,我们可以将通用的头部、...
SiteMesh是一个非常优秀的页面装饰器框架,它将页面共用的内容放在装饰器页面中,通过对所有用户请求和服务器响应进行过滤,把装饰器中指定的共用内容插入到被装饰页面中,从而形成一个完整的页面。SiteMesh框架通过...
SiteMesh是一种用于Java Web应用的装饰器设计模式框架,主要通过拦截Web页面请求,动态地将装饰页面如头部(header)、底部(footer)、样式表(stylesheet)和脚本文件(scripts)等页面元素与实际页面组合在一起,...