JSP页面的统一布局(Layout)与外观(Look and Feel)

有两个页面first.jsp和second.jsp。

first.jsp



	

Welcome

Body for First JSP

Copyright © 2005-06


second.jsp



	

Welcome

Body for Second JSP

Copyright © 2005-06


可以看出其中header和footer部分明显重复编码了,而且不好维护,一旦要发生改变,两个页面都需要改。现在用jsp的include来改进:

把header和footer部分抽象出来,放进两个文件:

header.jsp

Welcome

footer.jsp

Copyright © 2005-06


然后在first.jsp和second.jsp中用include来静态(<%@include/>)/动态导入header和footer的内容:

first.jsp



	
Body for First JSP

second.jsp



	
Body for Second JSP

这样还存在一个问题,就是两个页面的layout重复编码了,不好维护。于是引入jsp template来解决这个问题,这里用Apache Titles作为示例:

layout.jsp



	
然后所有的页面都共享这一个layout.jsp作为布局和外观的模板。

这种解决方案有很多,

  • 除了Titles之外,JSP2.0本身也提供这样的模板功能,参考http://stackoverflow.com/questions/1296235/jsp-tricks-to-make-templating-easier
  • 另外SiteMesh也是一个很好的装饰框架,参考http://www.allapplabs.com/tiles/tiles_web_page_layouts.htm
  • 另外JSF的facelets/xhtml也提供了一种类似的模板机制,使得JSF2.0的用户可以不用借助第三方框架就可以统一布局和外观。
  • 其他的框架???


这篇文章很好的阐述了本文的思路:http://www.allapplabs.com/tiles/tiles_web_page_layouts.htm


注:Layout可以借助HTML中的Frame/iFrame,Table,Div等方法来创建。

你可能感兴趣的:(JSP页面的统一布局(Layout)与外观(Look and Feel))