锁定老帖子 主题:struts和webwork双体验
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2004-11-10
moxie 写道 dhj1 写道 在新版STRUTS1.2.4中, STRUTS已经跟WEBWORK2功能非常的接近了
等STRUTS直接支持Interceptor功能,这句话才会生效。否则,STRUTS再升级,也不过还是那样! 有道理。Struts关键的问题是接口上的HttpServlet....,如果不支持interceptor,它就没办法import/export JavaBean properties,那就摆脱不了这个Servlet aware的action接口。 |
|
返回顶楼 | |
发表时间:2004-11-10
dhj1 写道 moxie 写道 dhj1 写道 在新版STRUTS1.2.4中, STRUTS已经跟WEBWORK2功能非常的接近了
等STRUTS直接支持Interceptor功能,这句话才会生效。否则,STRUTS再升级,也不过还是那样! 我用Struts完全没有什么不舒服. 如果确实需要Interceptor,.完全可以用第三方的.因为struts并不是AOP struts的本质是一个MVC, 虽然它增加了很多功能,比如支持在配置文件中配置数据库等等. 但是很多人还是用了STRUTS+hibernate,还是有相当的人不用Struts在配置文件中配置数据库. STRUTS的定位是MVC, 它的别的一些功能不强,是很正常的,就象WW2也不是通吃一切,要不然为什么会有WW2+SPRING+HIBERNATE的模式. SPRING也有V层,还是很多人不用SPRING的视图层. 所有的技术在一定时间内是共存的,有人用STRUTS是因为资料多少问题,习惯问题,只要现在还存在的技术,就没有必要去人为的打倒它, 该死掉的技术自然会死掉,不死掉的技术打也打不死! 说这些都是废话。关键是,现在的Java已经支持dynamic proxy了,所以绝大多数的frameworks不应该侵入JavaBean,不应该强迫JavaBean继承一个基类,更不应该在接口上出现HttpServletRequest这种东西——有这么一个接口,我还怎么给它做单元测试?功能强大不强大暂且不论,2004年的今天如果基础框架还侵入JavaBean,它就是个糟糕的框架,因为同样的事情我们肯定可以用更好的方式去做。 |
|
返回顶楼 | |
发表时间:2004-11-10
现在Struts和Webwork的优点和缺点已经讨论的很清楚了,用不用,在于个人,没有必要再争下去了,就好像你说汇编语言写应用软件太麻烦,可是有的人说我就是喜欢用汇编语言,怎么着? 那么喜欢用就只管一直用下去好了。
|
|
返回顶楼 | |
发表时间:2004-11-10
dhj1 写道 StrutsTestCase for JUnit is an extension of the standard JUnit TestCase class that provides facilities for testing code based on the Struts framework. StrutsTestCase provides both a Mock Object approach and a Cactus approach to actually run the Struts ActionServlet, allowing you to test your Struts code with or without a running servlet engine. Because StrutsTestCase uses the ActionServlet controller to test your code, you can test not only the implementation of your Action objects, but also your mappings, form beans, and forwards declarations. And because StrutsTestCase already provides validation methods, it's quick and easy to write unit test cases. 这只是个work-around。如果可以直接new一个action然后调用它的方法,岂不是更好?其实apache很多项目的设计都挺糟糕的,比如merlin就是这么个例子,很多时候就是因为没有用好dynamic proxy。当然我们讨论framework的优劣不代表说马上就要舍弃struts,我现在还用struts呢。讨论归讨论,知道更好的存在也不等于立即就要转过去。 |
|
返回顶楼 | |
发表时间:2004-11-10
dhj1 写道 Struts APIs assume servlet API objects (ServletContext, ServletRequest, ServletResponse), whereas JSR-168 talks aboutPortletContext, PortletRequest, and PortletResponse. We'd either need to change the calling sequence for Action.execute() -- problematic for backwards compatibility -- or fake it somehow in a portlet environment. 这个很有意思。从servlet环境到portlet环境,这是个很重要的需求变更。能不能很好地适应这个需求变更,足以说明一个framework的优劣。首先我们可以很肯定的说,以前写的Struts action肯定不能直接移植到portlet环境底下来用。那么WebWork呢?我已经做了这个移植工作,稍后把东西贴上来。 |
|
返回顶楼 | |
发表时间:2004-11-14
一个Action只能对应一个FormBean,而事实上我的一个action会做很多事情-通过参数来区分做什么例如userAction?type=add之类的, 但是不是所有的type所要处理的数据对象都是包含同样的字段, 目前的做法,要么把所需要的字段统统塞进一个formbean中,要么就别让一个action只能做单一的事情,delUser,UpdateUser,CreateUser都要分开.那么action将会非常多,难以维护, 这点更让人不可接受.
或者说, 有绕开的办法,我暂时没发现. 刚看了ww2的文档, 在interceptor中,如果只能配置一个model的话,那么ww2依然会有同样的问题. |
|
返回顶楼 | |
发表时间:2004-11-15
dhj1 写道 jbaggio 写道 一个Action只能对应一个FormBean,而事实上我的一个action会做很多事情-通过参数来区分做什么例如userAction?type=add之类的, 但是不是所有的type所要处理的数据对象都是包含同样的字段, 目前的做法,要么把所需要的字段统统塞进一个formbean中,要么就别让一个action只能做单一的事情,delUser,UpdateUser,CreateUser都要分开.那么action将会非常多,难以维护, 这点更让人不可接受.
或者说, 有绕开的办法,我暂时没发现. 刚看了ww2的文档, 在interceptor中,如果只能配置一个model的话,那么ww2依然会有同样的问题. 用Struts的动态Action! 我搜了一下,没有你所说的动态action, 你指的是不是DynaActionForm? 这样的话没有本质的改变. 只是减少了formbean的数目, 但是依然不能改变一个action之能绑定一个formbean的情况. |
|
返回顶楼 | |
发表时间:2004-11-15
他是说DispatchAction、MappingDispatchAction、LookupDispatchAction之类的吧
|
|
返回顶楼 | |
发表时间:2004-11-15
哦, 这个好像1.2.X之后提起了,我还没看,似乎这个问题在1.2以后的版本改进了......我先see see
|
|
返回顶楼 | |
发表时间:2004-11-15
我刚看过了你说的那些冬冬, 并没有解决我所说的问题, 可能是我的举例误导了各位, 我的问题是, 一个action只能绑定一个从页面传递过来的formbean对象,
dispatchAction不过是美化了一下分支动作而已, 而我所需要的是一个action对应不同的从表示层传输过来的datamodel. 比如Action1要做三间事情, 换句话说,三个不同的页面 都将把请求提交到Action1, 但三个请求所需要传递的过来的数据一般来说都是不一样的.而Action1,只对应一个Formbean, 那么我只能要么: -- 把3个页面所需要的数据,都塞进那个formbean的属性中. 要么 -- 为三个请求各自建立Action,就会有3个action. 当然从这个例子中看,这样做也没什么不好, 具体到实际当中, 总是迁就于struts就会很不方便. |
|
返回顶楼 | |