论坛首页 入门技术论坛

我为什么不用struts

浏览 31251 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-04-17   最后修改:2011-04-17
accphc 写道
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的类型转换功能,对于数据校验,视项目而定。

你居然连换拦截器都不会就来评论struts2?把配置的defaultStack换成basicStack很难么?

十多个拦截器,每个拦截器的作用都非常分明,随意google一下,说明文章遍地都是,可以自己随意组合各种拦截器,还可以进行按需对包进行继承调用。

数据转换也不用这就没啥好说的了,想象下一个Long型id,每次传参代码里都自己写一个Long.parseLong(String)来把id转过来,不嫌麻烦?一个Date型日期,每次都自己写代码调方法从String转成Date不嫌麻烦?

是自己的转换比他的效率高还是转得更准确?

0 请登录后投票
   发表时间:2011-04-17  
teclogid 写道
连个简单的struts都学不会,还牛逼哄哄说一个月写一个。你写完了再说。
最烦那些懂点皮毛自我感觉良好,学不会便批这批那的烂货了。
不会,你可以问啊,只会埋怨。
1.method共享的变量才定义在方法外,内部的,某个请求独有的,你可以通过request取啊,也可以通过xxxaware接口注入啊。清不清晰取决于你自己的设计,框架只是提供很多方式让你选择而已。
2.拜托你看清楚json-plugin的文档行吗? root,includeProperties,excludeProperties参数。

用struts做了几个项目了,还是这水平?
框架这种东西,你要是对mvc有common sense的话,看一个礼拜的官方文档,应该差不多了吧?
还号称自己写。这种话,只能写出来了再说。




讲得好哦,在理
0 请登录后投票
   发表时间:2011-04-17  
好东西要用的,每个人都有自己的认识
0 请登录后投票
   发表时间:2011-04-17  
wendal 写道
不如试试 Nutz

嘿嘿,广告回复,小心关你小黑屋哦。
我个人认为,Nutz 知道的人越少,对现在已有用户越有利 
0 请登录后投票
   发表时间:2011-04-17  
兄弟,也给说说吧,其实不管是那个MVC,主要是要了解这个思想、MVC的运行基理、了解服务器怎么个加载这些MVC,然后又是怎么去通过服务器取到这些个ACTION,以及实例化,这对你以后优化别人的MVC或自已开发MVC都有莫大的帮助呵
0 请登录后投票
   发表时间:2011-04-18  
MVC框架应该支持数据,逻辑处理,界面显示的分离。Struts做到了这点,但是的确太复杂了。个人认为,数据这一层只需有个将与界面交互数据对象化的库,数据持久化的库;
控制这一层只需普通的Servlet就可以了;
界面这一层只需有一个输出数据的模板库就OK了。
0 请登录后投票
   发表时间:2011-04-18  
完美的编程应该学习框架而不限于框架
0 请登录后投票
   发表时间:2011-04-18  
我只是觉得你用不用哪种技术,跟开发成本,维护成本,你的能力,还有收入挂钩吧,东西弄出来,收到钱之后,那才是王道。
0 请登录后投票
   发表时间:2011-04-18  
用flex 的飘过。。。。
0 请登录后投票
   发表时间:2011-04-18  
那就用JSF吧、、
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics