思考^新知^传播

crabhn's blog

 

[导入]sitemesh-页面IOC容器(页面设计层面的Spring)

IOC容器大家都经常用了,但是不知道有没有人注意到在web层我们也可以使用很好的“IOC容器”,就是可爱的sitemesh了,在使用sitemesh之前我们都是直接使用include来包装页面,把一个普通的页面include head.jsp menu.jsp footer.jsp这样就组装好了一个页面,但是这里这三个文件就和所有的这些使用他们的jsp硬编码放在一起了,这就像我们在系统里面用new来生成一个instance,这样页面也一样造成了很高的耦合度。这样在页面级别如果出现需要更改就非常的麻烦了,比如客户说你这个页脚我不想要这个,需要另外一个,或者菜单不放在左边,我要放到右边去了,这样你就晕倒了,由于include到处都是,你要一个个找出来修改,也许你会说可以把它们变成空的文件就可以,当然可以,但是这毕竟不是最好的解决方式。

这时候你就可以看看sitemesh了,他和spring一样,在配置文件里面配置页面之间的关系,比如很多的前台页面都需要一个页头,一个菜单,一个页脚,那么你就可以作一个页面的模板,包括这些元素,但是在需要插入的地方作一个插入占位标签,这样sitemesh就会把被修饰的页面的body部分抽取出来无缝地插入到页面模板里面去。sitemesh理解html,这样它就可以抽取指定的标签到模板相应位置,比如title,比如body里面的onload事件还有head里面的javascript代码。你不用担心它会插错位置。

这样你就可以独立的进行页面的编写,每个页面只需要维护它自己的功能,至于它需要和哪些页面来组合一概不知,这样就把页面级别的耦合全部去除,非常符合DRY(Don't Repeat Youself)原则。

如果sitemesh+web标准的css和无table的方式来设计页面,就可以完完全全做到页面的干干净净,而且显示和内容完全分开,对于直接接触到jsp源码的程序员是一种享受了:)


文章来源:http://blog.donews.com/crabhn/archive/2006/03/02/750132.aspx

posted on 2006-03-03 00:27 crabhn's blog 阅读(330) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(2)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜