当今的信息管理软件在逐渐的向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类,这样完全可以实现重用。
闽公网安备 35060202000074号