论坛首页 入门技术论坛

我为什么不用struts

浏览 31250 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-04-18  
哎,这种帖子值的吵吗?
0 请登录后投票
   发表时间:2011-04-18  
zozoh 写道
wendal 写道
不如试试 Nutz

嘿嘿,广告回复,小心关你小黑屋哦。
我个人认为,Nutz 知道的人越少,对现在已有用户越有利 

哈哈, 来啊,小黑屋啊
0 请登录后投票
   发表时间:2011-04-18  
问一下 大家用框架的目的是什么?
不管是使用springmvc还是struts 最终的目的不是为了提高生产力吗?
至于使用什么框架,就看个人的喜好以及项目的要求了。
0 请登录后投票
   发表时间:2011-04-18  
action不会爆炸的...
你看看springside就知道了..不解释

...struts的属性范围..我不知道你想表达什么..一直用..基本没出现过问题..不过碰到过..关键字重复..所以你定义变量的时候别太那个了

还有struts2 中ServletActionCOntext.getRquest() 很容易取得..request..你想要什么就拿吧..和servlet没区别的..

自己写框架倒是也支持..不过..自己写了..多少人爱用..会用就是个问题了..

还有struts的ajax..你可以用点别的啊..我很少用json ,dwr或者别的..直接用jquery div iframe ...或者直接response...


这是一种习惯吧..人都有恋旧情节的呵呵..用了三年struts2 的飘过..

顺路说说spring-mvc 其实不错..用他做过个项目..感觉很轻量级...小项目可以试试..大项目还是保守点吧..毕竟不是你一个人再做...

写程序就是往傻往楞..往简单里写 simple is beautiful
0 请登录后投票
   发表时间:2011-04-18  
i got it.
0 请登录后投票
   发表时间:2011-04-18  
xiaodong还趟je的浑水啊?这里回帖的大部分人全职做过的项目还没有你兼职玩过的,就一帮只会扯蛋的
0 请登录后投票
   发表时间:2011-04-18   最后修改:2011-04-18
前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。
这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。

有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。

让我们来梳理下mvc的功能先:
mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。
先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。
在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。

另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。

请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do

除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。

废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理?
0 请登录后投票
   发表时间:2011-04-18  
hexiaodong 写道
前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。
这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。

有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。

让我们来梳理下mvc的功能先:
mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。
先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。
在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。

另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。

请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do

除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。

废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理?

说你是月经贴,还没完没了了。不就是显摆你会写mvc框架吗?简单的mvc框加也就那点东西。但是struts2、springmvc等框架为了通用和强大,自然有很多类。
说到学习成本,struts2,根本就是半小时的事。就写一个action就完事了,就一个中转的东西,根本没什么好弄的。至于strtus2的标签的学习,你可以不用,毕竟是附加的东西。

引用
就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。

复杂的对象组合,是在service层完成。action本身就不应该做这些东西。你在action做这些封装本身就是你设计的失误!action只是简单的中转。也就是说你这个order直接放在action的属性中,或者可以定义model驱动。界面直接order.xx.xx就完事了。多麻烦的事?
还json,还map,不知道你要搞什么?你搞的那点东西就你自已懂,别人怎么办?以后的人怎么办?struts是大家都懂的,后来的人学习成本低。也利于产品的维护。不懂就学,别jjyy。
我以前公司有个人拿他写的所谓的mvc框架给我看,说多么多么好,被我一陈批。不知道这个人是不是你。
0 请登录后投票
   发表时间:2011-04-18  
hexiaodong 写道
前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。
这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。

有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。

让我们来梳理下mvc的功能先:
mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。
先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。
在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。

另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。

请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do

除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。

废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理?

 

<input type="text" name="order.user.id"/>这样是Order对象中的User对象的id为你输入的值。如果Order和关联的User是存在的,则直接赋值,如果不存在,则使用默认构造方法创建。

 

<input type="text" name="order.details.product.id"/>这样是你说的订单中的订单明细中商品的关联,输入的值是最终被关联的商品的id。

 

不知道我这样说你是否明白。

 

0 请登录后投票
   发表时间:2011-04-18   最后修改:2011-04-18
Agrael 写道
hexiaodong 写道
前几天为了整理下思路才写下了上面的文字,没想到引来这么多攻击。
这里有我的不是,我确实很久没用struts2了,不了解他很多插件的用法。但是这么多人号称精通或者熟练struts2,实际上用的好的人的确很少,这也是个事实。

有人让我把自己的框架写出来,再来评论struts2。这个框架我自然是有的,已经用个很多年了。框架的主要的特点是灵活和简单。

让我们来梳理下mvc的功能先:
mvc作为一个交互层框架,核心功能无非有3个:简化输入处理、分发请求、简化输出处理。
先看输入处理的简化吧。输入无非有2种类型:一种是仅仅输入一两个参数的,大部分get请求都是这种类型,比如你请求阅读、删除一个对象的时候,参数通常只有一个Id。还有一种输入是向服务器端提交一个复杂的对象、对象集合或者对象图的。
在我的mvc框架中,对于第一种输入,我仅仅提供了简单的类型转换,框架提供了一个Input类,该类提供了getLong(String key),getInt(String key),getDate(String key)等方法。对于第二种类型输入,我采用json格式来提交。服务器端通过java-json序列化工具的反序列化方法可以很方便获得复杂的对象或者对象图,对于action来说,通常仅仅需要调用inupt.getValue(key,Class)就可以了。我知道struts2本身可以处理较为简单的表单提交,它能够直接把表单参数注入到action某个对象变量中,虽然它的form中input的命名比较恶心点,但总是能做的。但我的确不清楚struts如何处理一个复杂的对象图,在企业应用中,这种情况还是比较常见的,就拿订单录入来说吧:订单对象本身关联了客户、制单人、客户联系人,订单还关联了订单明细,订单明细中又关联了商品,商品目录,商品单位等等。像这样一个交互,我估计大多数struts2的所谓高手,可能会把交互过程写的很复杂,或者代码很难看。但是在我的框架中,前端可以很简单的处理:var order = form.getValue();order.details = grid.getValue()。服务器端的代码如下:input.getValue("order",Order.class)就可以了。如果struts2中也可以这么简单,如果能指点我一下,我很感谢。虽然这里只是举了一个例子而已,实际上,因为前端采用json格式提交数据,你可以在前端尽可能发挥想象,可以组装任意的对象图提交到服务器端,而服务器单又能很简单的把它反序列化到java对象。UED将不会因为表单只能提交扁平的信息而烦恼。

另外看看输入处理吧。我的框架中主要处理4种类型的输出:jsp输出、jsp模板输出、重定向输出和json输出。无论哪种输出,action首先调用output.put(key,value)把领域对象设置到一个输出Map中。对于然后调用:return "dispatcheTo xx/aa.jsp" 或者 return "Wrap a.jsp in b.jsp" 或者 return "redirectTo url?key=${key}",对于json输出,你可以reutrn null。对了,这里面除了json输出需要配置映射策略,其他地方无需任何配置。

请求分发,是根据约定来处理的,url的形式是:http://host/action/method.do

除了可以处理复杂的交互之外,这个框架还很简单,只需要20个左右的class就够了,学习成本大约2个小时吧。2小时候是真正的熟悉,可以熟练使用,处理复杂交互了。当然,复杂的交互是需要有相当的Js基础的。但框架本身你用2小时足够了。

废话不多说了,你爱随大流我没意见。但我希望有人能够静下心来想一想,交互层核心是什么?有没有必要用几百个class来处理?

 

<input type="text" name="order.user.id"/>这样是Order对象中的User对象的id为你输入的值。如果Order和关联的User是存在的,则直接赋值,如果不存在,则使用默认构造方法创建。

 

<input type="text" name="order.details.product.id"/>这样是你说的订单中的订单明细中商品的关联,输入的值是最终被关联的商品的id。

 

不知道我这样说你是否明白。

 

action里忘记说了,action里

private Order order;
//...getter & setter

 如果不是对象图形式,getter是不需要的。

0 请登录后投票
论坛首页 入门技术版

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