当今的信息管理软件在逐渐的向WEB上发展,但WEB中致命的缺陷就是很难构建理想的用户操作界面,即使用SCRIPT写好一些控件也很难重用,更不用说是采用面向对象的设计方法来设计,这就增加了大型系统的开发与维护的难度,所以现在的软件公司还是采用C/S模式进行开发,这样用户的操作界面就可以采用第三方控件生成,这样节省了开发周期,同样难度较小,大部分的时间就用在了需求分析与业务建模中,而且后期维护也很容易,因为代码量越小,出错的机会就越少。
但是新的技术终就会代替旧的技术,这就需要有人敢闯敢干,不怕失败,努力进取。随着WEB框架的不断更新,WEB开发也在不断的完善,STRUTS,JSF等等优秀的框架得到很多JAVA爱好的者的认可,但是在这些框架中还是没有根本的解决用户的操作界面,STRUTS还是采用TAGLIB的方式来实现基本的控件(也有一些扩展控件),这样一来用户界面的开发只能是一些HTML标记加上一些扩展标记来实现,增加开发的复杂度,以前是在JSP中加入JAVA代码,现在加入扩展标记,基本上没有多大进步。
以上是对WEB开发中的不足简单的介绍了一下,这只是我个人的见解,下面来介绍一下我开发的WEBFORM技术,类结构如图
WEBFORM主要采用JDOM来构建HTML标记树,先通过HTMLObject类来构建一般的HTML对象,然后对GenericExtendObject来构建扩展对象,主要是一些常用的控件,例如菜单,工具条,树等一等比例控件,扩展控件中的HTML基本对象的属性通过PropertiesAdder类来加载webform-infomatio.xml文件来添加,然后在Struts中的Action中调用UIBuilder的实现类来生成用户界面,再通过response.getWriter()输出HTML标记,如果用户的界面比较复杂或者担心速度太慢也可以采用扩展标记,只要通过pageContext.getOut()输出标记就可以实现,组合好这些基本的HTML标记后,还会引用到一些javascript,css,这些会根据控件所涉及的JS,CSS来自动添加,下面是两个例子的代码。
//Struts的Action中
public class ResourceAction extends DispatchAction{
public ActionForward open(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Window window = new Window();
Lable lable = new Lable();
lable.addText("Hello World");
window.addChildren(lable);
window.printHTMLTag(response.getWriter());
return mapping;
}
}
客户端输出为:
?
?
??? Hello World
?
?
这种方式不同与ECHO项目,ECHO大量的采用了Session,Cookie这样服务器的性能会下降,但是JWF则没有采用,它只是组合HTML标记,其它的则完全由JS,CSS来完成,在开发JWF组件的时候,首先要用JS实现,然后尽量的简化HTML标记,最后通过封装成JAVA类,这样完全可以实现重用。