精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-25
*作者:张荣华(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的配置 <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"> <xwork> <include file="webwork-default.xml"/> <package name="default" extends="webwork-default"> <action name="userAction" class="org.easy.test.action.UserAction"/> </package> </xwork> 是的,一个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的源代码和可以执行的一个例子程序。 作者:张荣华,未经作者同意不得随意转载! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-25
http://struts.apache.org/2.x/docs/result-annotation.html
struts2的标准用法 |
|
返回顶楼 | |
发表时间:2007-06-25
yingqing 写道 http://struts.apache.org/2.x/docs/result-annotation.html
struts2的标准用法 这个是struts2的标准用法吗,之前人们给出的例子都是没有这样用的,所以我才去扩展,不过看来思想都是一样的,只是手段不一样,我之所以去扩展是为了学习和研究xwork,因为下一步我要做的就是基于xwork2.0做一个貌似于rest风格的mvc框架(如果我有时间的话)。另外我很不喜欢struts2.0,这个挂羊头卖狗肉的家伙,它包括了太多东西,很多人都反应它的慢,所以我根本就没有兴趣去学习它了 很多问题第一章已经有过讨论了。 http://ahuaxuan.iteye.com/admin/show/91614 再次声明:本文的主要目的在于学习和研究,关键是你能否提出你的想法 1,提出想法 2,实现想法 |
|
返回顶楼 | |
发表时间:2007-07-02
ahuaxuan 写道 。。。。
因为下一步我要做的就是基于xwork2.0做一个貌似于rest风格的mvc框架(如果我有时间的话)。另外我很不喜欢struts2.0,这个挂羊头卖狗肉的家伙,它包括了太多东西,很多人都反应它的慢,所以我根本就没有兴趣去学习它了 对于ww转向struts2这件事情,心里真有点不是滋味。 以前也有类似的想法,只是被JSI缠身,所有的事情都被迫放下了,楼主好好干吧,口头上支持一把。 |
|
返回顶楼 | |
发表时间:2007-07-02
不太赞成将转向的页面名称直接通过annotation标识在代码里面,这样做的弊病很多,如果项目很大,action类很多,直接把result标记在代码里维护量也一样少不了
特别是用如果页面部分采用了portal或则工作流驱动的页面生成, 不过各人有各人的用法, 同楼上,支持楼主一把 |
|
返回顶楼 | |
发表时间:2007-07-03
atianchen 写道 不太赞成将转向的页面名称直接通过annotation标识在代码里面,这样做的弊病很多,如果项目很大,action类很多,直接把result标记在代码里维护量也一样少不了
特别是用如果页面部分采用了portal或则工作流驱动的页面生成, 不过各人有各人的用法, 同楼上,支持楼主一把 annotation我没用过,不过以前一直用xdoclet做代码和配置文件的生成,和你的观点相反。 我觉得更具相关性集中定义最大的好处就是维护体来方便,东西查找起来比较方便。同步修改比较方便。 不过,感觉annotation也有一个不好的地方,修改一下配置必须从源代码开始。必须从新编译。 我更倾向于通过他生成xml配置,部署的时候可以适当修改而不必改动源代码。 |
|
返回顶楼 | |
发表时间:2007-07-03
jindw 写道 不过,感觉annotation也有一个不好的地方,修改一下配置必须从源代码开始。必须从新编译。 这个问题如果是在开发的时候就不是问题了,反而是一个优点,不需要重新加载配置文件,就能修改result。但是在部署之后如果要改动就是一个缺点了,因为必须要重新编译了 jindw 写道 我更倾向于通过他生成xml配置,部署的时候可以适当修改而不必改动源代码。 这个想法不错,开发的时候用annotation,清晰,直观,部署的时候用生成的xml。修改方便 |
|
返回顶楼 | |
发表时间:2007-07-20
从礼貌上支持一下楼主,因为是新手,就不在关公面前耍大刀了,希望LZ多听听大家的意见,永远支持你!
|
|
返回顶楼 | |
发表时间:2007-08-14
我最近一直在开发一个新的web框架~最初的想法是以正则表示匹配URL,采用annotation做配置。但是现在我放弃了annotation~~因为采用这种方式就失去了配置文件的作用,你更改配置必须重新编译程序,更要命的是你在反射annotation的时候效率执行的效率非常的低~~。你可以试一下~。
还看到有朋友想设计REST风格的框架,和我的想法一样~~我以前也是想采用xwork,但是我后来也是放弃了~~原因也很简单~我如果采用正则表达式匹配URL,那么action里面最好的情况下是有参数的~而不是无参数的。这个我还在摸索中~~~ 希望和更多的朋友交流一下~firefireflyc@126.com |
|
返回顶楼 | |
发表时间:2007-11-01
干脆直接返回哪个模版文件好了:
return "login.ftl"; |
|
返回顶楼 | |