浏览 1883 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2016-02-08
最后修改:2016-02-08
JWebBox2.0.0发布在: http://sourceforge.net/projects/jwebbox/, 采用开源BSD协议。 目前一些JSP页面布局工具的缺点: Tiles: 功能强大但过于臃肿,版本依赖强,源码与struts联系太密,第三方库引用多,XML配置和标签不够灵活。 Sitemesh: 采用装饰器模式,不够强大灵活。 JSP Layout:功能过于简单,布局之间无继承关系,不能复用。 Stripes:是一个mvc框架,布局功能是其子功能,只有三个标签,功能太弱。 JWebBox2.0.0版主要特点: 1)用JAVA类代替XML配置,利用到了JAVA的继承和变量覆盖等特点,JAVA类是每个程序员都能看懂的,无需学习。 如果布局太复杂可以考虑利用UML工具绘出布局继承和引用关系图。 2)无侵入性,可以和其它页面布局及MVC框架共用而无冲突, 可用于整个网站的架构,也可以用于编写局部页面零件。 3)没有引入任何第三方类库(连Log4j都没用), 也没有使用标签,纯Java方法调用,无学习负担。 4)布局(Box类)是动态生成,在运行期创建和修改非常方便。 5)支持静态方法、实例方法、URL引用三种数据预处理方式。方法签名采用约定而不是接口,减小侵入性。 6)只有一个很小的Box.java文件是必须的,拷贝到项目源码目录下即可使用,方便查看代码和更改源码(采用BSD开源协议)。 使用方法: JWebBox2.0.0示例文件已打包成jwebbox2.war文件,可直接扔到Webapps目录下运行,示例演示了几种布局用法。 源码也在.war包里,解压后可见。也可直接将jwebbox2.war导入到Eclipse作为一个项目查看。对于新项目,将其 中的Box.java文件,拷到项目源码目录中即可。 一个典型的使用JWebBox2.0布局的项目,由模板页面、布局类、数据预处理类(可选)组成,例如: 1.JSP模板文件, 如一个模板文件template.jsp内容如下: <html xmlns="http://www.w3.org/1999/xhtml"> <%@page import="com.jwebbox.Box"%> <%Box box = Box.getBox(pageContext);%> <head> <style type="text/css">...</style> <title>JWebBox2.0.0 Demo</title> </head> <body> <div id="temp_content"> <div id="temp_top"> <div align="center"> <% box.showAttribute("menu");%> </div> </div> <% box.showAttribute("body");%> <div id="temp_bottom"> <div align="center"> <% box.showAttribute("footer");%> </div> </div> </div> </body> </html> 2.布局Java类 如 DemoBox1.java public class DemoBox1 extends Box { { this.setPage("/template/template.jsp"); this.setAttribute("menu", new Box("/template/menu.jsp").setAttribute("msg", "Demo1 - A basic layout")); this.setAttribute("body", new BodyLeftRight()); this.setAttribute("footer", "/template/footer.jsp"); } } 和 DemoBox2.java public class DemoBox2 extends DemoBox1 { { this.setAttribute("menu", ((Box) this.getAttribute("menu")).setAttribute("msg", "Demo2 - Change body layout")); this.setAttribute("body", new BodyTopDown()); } } 其中BodyLeftRight 和 BodyTopDown 也是布局类,一个是左右布局,一个是上下布局,源码因篇幅原因略过,可详见下载示例包。 3.Logic类(可选) 用于访问数据库以对页面提供数据,也可以在运行期更改或创建新布局。 public class DemoLogic { ...略一段代码... public static void prepareStaticMethod1(PageContext pageContext, Box callerBox) throws IOException { pageContext.getOut().write(" This is inserted by prepareStaticMethod1 method<br/>"); } public void preparerBeanMethod1(PageContext pageContext, Box callerBox) throws IOException { ((Box) callerBox.getAttribute("menu")).setAttribute("msg", "Demo3 - Show how prepare methods be called"); callerBox.setAttribute("footer", "/template/page3.jsp"); } public static DemoLogic getInstance(PageContext pageContext) { return SingletonInstance.INSTANCE; // If use Spring, get bean instance from pageContext: } } 4.最后在需要显示的JSP页面调用布局显示即可: index.jsp: <% String demono = request.getParameter("demono"); if ("2".equals(demono)) new DemoBox2().show(pageContext); else if ("1".equals(demono)) new DemoBox1().show(pageContext); %> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |