*作者:张荣华(ahuaxuan)
*2007-06-25
*转载请注明出处及作者
*/
让webwork零配置 第二章(实例已放出,大家可以下载运行)
又到周末了,平时没有时间,所以我的主要学习时间是放在周末,让大家久等了,上个周末说到webwork2零配置的第一章,很多人积极参与讨论,给出了很多有用的参考意见,在这里先谢谢大家,当然也有其他意见的也能理解,我想原因可能有以下几点:
1毕竟在公司里选择一个web层框架是一个重要重大的决定,很多人都是身不由己,这种经历我想大家都有过。
2正如抛出异常的爱所说,这是一个快餐型社会,很多人都比较喜欢吃快餐(现实生活中也是如此,从肯德鸡和麦当劳的红火的生意就可以看出来了),大家都比较喜欢立刻能看到效果的那种,而不是大篇赋的讲解。
3很多人对web框架没有兴趣,现在有那么多web框架,为什么要选easywebwork呢。
其实扩展webwork2只不过是闲暇之余的一个消遣,或者说是一个兴趣(每个人都有自己的兴趣),并不是让观者去把它用在项目中(当然如果你乐意那么也可以),而是一种学习的过程,不是学习使用webwork2这个框架,而是学习框架背后所隐藏的思想,不是为了框架而框架,是为了学习而框架,webwork2中包含了很多设计模式,其代码风格等等都是可以学习的,当然我说的学习并不是单纯的模仿,我说的学习是:择其善者而从之,其不善者改之。因为我相信,webwork2的思想绝对在webwork2被实现之前就产生了。在这里我还要举个例子,之前我经常看到有人说struts(1.x系列)的代码如何烂如和糟糕,是这样的吗,绝对不是,我不是替struts辩护什么的,struts的代码没有什么糟糕不糟糕之说,不被大家称道的其实是struts框架背后的思想,正是这种思想导致了struts的不优雅,这才是正真的原因。
在重新考虑之后,我决定主要讲解原理,代码就不讲解了,因为吃大餐比较花时间,所以就改请大家吃快餐了。
附件是扩展后的webwork2的一个例子,在这个例子中,action中的方法都使用了annotation,而xwork.xml中的配置只有那些common的配置,明显改变了很少,而在action中,我们也能够一眼就看出来这个方法将要返回的页面,不需要再去xwork.xml中找了,呵呵。
首先讲一下这个例子是作什么的,这是一个登陆的简单例子,登陆正确后就到一个编辑页面,登陆失败后回登陆页面并且显示失败信息。
让我们来看看改造后的webwork的配置是如何简单吧,以下是xwork.xml的配置
是的,一个action只有这么多配置,那么其他的配置去什么地方了呢,其他配置都搬到了action中了,让我们来看一下action中的片断:
@ResultListAnnotation(results = { @ResultAnnotation(name="SUCCESS", template="/editUser.htm"), @ResultAnnotation(name="ERROR", template="/editUser.htm")}) public String editUser(){ System.out.println(name); return SUCCESS; } @ResultListAnnotation(results = { @ResultAnnotation(name="SUCCESS", template="/editUser.htm"), @ResultAnnotation(name="ERROR", template="/login.htm")}) public String login(){ if ("test".equalsIgnoreCase(name) && "test".equalsIgnoreCase(password)) { return SUCCESS; } else { errorMsg = "the name and password are not right!!"; return ERROR; } }
就这么简单,和原来的使用基本没有什么区别,不同的就是把result的配置搬到类中,使用了annotation来实现(如果不理解请看第一篇文章),公共的配置放到xwork.xml中,而都有的配置,比如说result的配置就使用annotation来实现,这样有以下几个优点:
1, xwork.xml简化了非常之多,改造后,每个action只需要配置一行代码,假设你的项目中有50个action,那么只需要在xwork.xml加50行这样的配置就可以了,而没有改造之前的话,有多少代码就难以估计了。
2, 每一个action中的方法执行的返回结果都能一幕了然,根本无需再到xwork.xml中找result的定义了,维护起来也更方便了。试想有50个action的项目,然后又分了模块,有不同的xwork.xml,那么你要找到某个action的某个方法所返回的result那是多费力的一件事啊。
环境:
我在开发这个实例的时候使用的tomcat6.0和jdk6.0,而webwork使用的2.2.2的版本。
如果没有看过第一章的话最好也看一下
第一章的地址为: http://ahuaxuan.iteye.com/admin/show/91614
附件中附带 扩展webwork2的源代码和可以执行的一个例子程序。
作者:张荣华,未经作者同意不得随意转载!