锁定老帖子 主题:我为什么不用struts
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-04-16
Agrael 写道
hexiaodong 写道
在我眼里,struts还有几个关键的缺点,所以我用了3-5个项目后就不用了。 主要的缺点有这么些: 1、输入输出变量范围定义不清晰。在一个action中,所有输入输出变量都是作为对象变量存在的,既无法区分某个变量是属于哪个方法的,也不能区分哪个变量是输入变量还是输出变量。有人说,我每个请求都用单独的action来处理不就行了。这个办法的确可以区分每个请求之间的输入输出,但是你会面临action数量急剧膨胀的问题。 输入输出变量定义不清晰的带来的问题是代码可读性比较差。使用struts的时候,极端情况下,你得把jsp+action+js结合起来看才能确定某个请求有哪些输入输出。这对项目的维护者来说实在是件很痛苦的事情。
2、struts在处理ajax请求的时候太不方便了,虽然你可以配置一个插件让strus具备返回json result的功能。但是目前的插件距离我的实际需要还是有差距的。主要的问题在于,struts现有的json插件不能定义java对象序列化到json对象时的映射策略。就拿User对象来说吧,假如我目前设计的是订单界面,订单又引用了User对象作为订单的制单人属性。那么在序列化Order对象到前端的时候,我只需要序列化User对象的id,name就够了,user对象的其他属性可以统统不要。但我如果在维护用户的模块中,显示用户列表的时候,通常要显示用户对象的大部分属性。因此java对象到json对象的序列化策略应该是运行时动态设定的,不可能用annotation来申明。但struts以及struts插件并没有提供运行时根据请求为某个类选择不同映射策略的功能。
struts2,学习成本不可谓不高,功能不可谓不强大,但不符合我的需求。
学习strus2,假如不花个把月时间静下心来学习和实践,估计没人敢说自己精通strus2了。但mvc真的有必要那么复杂么?
mvc是什么?他应该能干什么?他的核心价值在哪?最小的mvc应该包含哪些功能?我们自己写一个mvc如何?自己写一个mvc框架需要超过一个月时间么? 建议看看json返回类型的includeProperties和excludeProperties。 最近JE上出现的文章常见到如“struts2的一个大bug”、“struts2悲剧的bug”等等文章,到底是struts2的问题还是使用者自身的问题。。。。。。 也建议测试struts2和springMVC性能的同学,最好不用default拦截器栈来测试,那个拦截器栈功能过多,有很多是用不到但是比较消耗性能的。 如果不用struts-default定义的默认拦截器,那该如何精简,可否给个具体的说法。。。 最起码也得搞清楚那些默认的拦截器是干什么用的吧。 对于我来说,坚决不用struts2的类型转换功能,对于数据校验,视项目而定。 |
|
返回顶楼 | |
发表时间:2011-04-16
这个,看自己口味吧。 Spring MVC倒时很方便,但是扩展性没那么强,Struts2反而用起有点麻烦了
|
|
返回顶楼 | |
发表时间:2011-04-16
论坛上现在就这么充斥着这种烂帖子,还占据主页
不说自己只懂些皮毛功夫,就怪别人的工具造得不够强大 就算工具强大了怎么的,你一样用不好.................. 吹牛逼的功夫到不小...... |
|
返回顶楼 | |
发表时间:2011-04-16
写公司内部的框架就行了
|
|
返回顶楼 | |
发表时间:2011-04-16
一般大点的公司都是用封装的struts吧,很少直接用struts的,当然,封装后的都面目全非了
|
|
返回顶楼 | |
发表时间:2011-04-16
楼主的第二个问题,实际上早在NNN年前人家dwr就已经给你解决了
至于第一个问题,说实话,我不认为是什么很大的问题,另外事实上我们的项目中很少在action里面放成员变量,有N多方式可以解决你的问题 PS:现在spring MVC用的很爽,楼主可以尝试下 |
|
返回顶楼 | |
发表时间:2011-04-16
mvc 各种技术,都有优缺点。
软件开发最终的结果是 要好用,实用。。 技术之不过选择而已。 存在就是道理 |
|
返回顶楼 | |
发表时间:2011-04-17
最后修改:2011-04-17
第一个问题:如果你一个请求对应一个action那么可读性便不会差,但是开发成本提高。(注:你使用其它框架也是一样的问题)。在这里我的做法是同种类型对应一个请求。如此可读性较好,开发成本也不是很高。
第二个问题:关于JSON的序列化,struts2是可配置的。看源码就清楚了。至于你说的什么动态绑定,我发表一下我的看法是:首次开发容易,后期维护,可读性一样存在很大的问题。如果你一个请求对应一个action配置,JSON的问题也不存在了。如果你觉得这种开发让你很烦恼,你也可以在Java代码中进行序列化,然后把这个字符串使用text,或者json的方式输出也能达到相同的效果。 总体来说你第一个问题,并不是struts2才有的,而且每种框架、servlet都有相同的问题。第二个问题,完全不是问题。 |
|
返回顶楼 | |
发表时间:2011-04-17
按需索取,struts和sppring mvc 都很强大,但不一定适合自己,我们用的mvc都是基于自己的项目所写,要的是速度和稳定,功能上并不需那么多,楼主的忧虑深有同感,这两个引入的思想太多了,以至于有些偏离
|
|
返回顶楼 | |
发表时间:2011-04-17
想当初开始学习STRUTS2时,上手非常快,感觉实在太方便了,至今也没遇到不能实现的功能。
当然这是从网站用户的使用角度说的,要是非要按某种习惯来写代码去说,没什么框架能满足所有开发者。 但是,屡次学习spring mvc3,发现上手实在痛苦,各种教程,例子,视频都看过,感觉除了REST路径好用以外就一原始的玩意。 struts2要区分输入输出参数降低效率?那spring mvc为每个请求重写各种参数定义算不算降低效率。 要说性能,JSP SERVLET还当之无愧第一呢。 |
|
返回顶楼 | |