论坛首页 入门技术论坛

MVC系列框架之Struts存在的意义是什么?

浏览 13361 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-10-29  
jameswxx 写道
阿里巴巴在招人,有兴趣的朋友看看
http://www.iteye.com/topic/797817

刚在校园招聘中被阿里的三面hr鄙视归来...等几年以后有机缘再进阿里吧..
0 请登录后投票
   发表时间:2010-10-29  
depravedangel 写道
kjj 写道
不是本人说mvc,或者鄙视培训,现在那些北大什么鸟,就会教学生配置框架,机械编程,根本不知道mvc之类是咋出来的,这样吧,lz,你什么框架都别用,什么第三方库都别用,然后就用纯粹的servlet+jsp+jdbc 开发一个个真正的大型项目【我也不一定说自己做过的多么大,只是说事】,你坚持用这种方式做上一年试试,看看你能否调入mvc的纠结,或者你可以看看play framework 或者前段时间je上有个大牛开发的douyu,我敢说,你不掉入mvc,就会倾向 play之流【并不是鄙视】,这些事程序技术发展的必经之路,如果你真正学懂了mvc的地位和作用,就不会发这些无聊的想法了,再就推荐你看哪个著名的人叫martin flow 的人写的企业架构模式那本书,相信你看了就不会再想这个问题了,除非你发展衍生出了比mvc更牛,更好的想法,mvc并不是空穴来风,连以前直坚持纯手工的php ,ruby等等动态语言都无可避免的加入mvc,你不要告诉我你理解这些语言逐渐加入mvc的阵营是为了迎合开发者这种想法

Struts这类思想的提出时间比较早,那时候Ajax等技术尚未普及成熟,而如今时代已变,对客户体验的需求已提上日程。
其实这款框架(暂且称之为框架吧)本人早已实现,作为整个技术体系的一部分,而且在公司已经过两年的项目检验了。开发出来的代码相对于struts来说更加简洁、清晰度更高。相对于struts系列的框架来说,更符合RIA发展的需要。


我倒是觉得RIA的发展和struts本身没什么很大的冲突,我只是对楼主的想法有个疑虑
虽说页面跳转的话确实RIA技术也可以做到,包括对于数据的增删改查,或许我们还可以直接对页面上某个组件的事件和数据源进行绑定操作,但是这里就有一个问题,都在客户端做这些事情的话,数据安全性,数据有效性的验证我们如何去做呢?
比方说,页面上一个表单,如果我们直接对表单进行绑定数据源,提交表单直接对数据库进行对应事件的操作
如果页面上某个text在业务逻辑里应该是存放一个float,而用户提交的时候text却是字母,而用户又别有用心的调试然后跳过你的js验证,甚至于某个页面展示的值实际是参与到最后的insert操作中的,而这个值可能是一个hidden可能是其他的element但是用户在提交前给你改了,直接绑定数据源就会很恐怖了
以上是我项目中有一个模块是N年以前写的,就是抛兄说的,vbs直接绑定数据源,呵呵,出过很大问题的
不过楼主的想法是好的,struts确实也是该有点更好的东西拿出来了,MVC也确实好多年了
0 请登录后投票
   发表时间:2010-10-30  
qjtttt 写道

我倒是觉得RIA的发展和struts本身没什么很大的冲突,我只是对楼主的想法有个疑虑
虽说页面跳转的话确实RIA技术也可以做到,包括对于数据的增删改查,或许我们还可以直接对页面上某个组件的事件和数据源进行绑定操作,但是这里就有一个问题,都在客户端做这些事情的话,数据安全性,数据有效性的验证我们如何去做呢?
比方说,页面上一个表单,如果我们直接对表单进行绑定数据源,提交表单直接对数据库进行对应事件的操作
如果页面上某个text在业务逻辑里应该是存放一个float,而用户提交的时候text却是字母,而用户又别有用心的调试然后跳过你的js验证,甚至于某个页面展示的值实际是参与到最后的insert操作中的,而这个值可能是一个hidden可能是其他的element但是用户在提交前给你改了,直接绑定数据源就会很恐怖了
以上是我项目中有一个模块是N年以前写的,就是抛兄说的,vbs直接绑定数据源,呵呵,出过很大问题的
不过楼主的想法是好的,struts确实也是该有点更好的东西拿出来了,MVC也确实好多年了

你前台直接绑定数据源,那数据源是从哪儿来的?说到底不还是从后台service获取的。验证也是如此,前端是需要做验证的,但service层的验证也是必不可少的。所以您说的这个问题应该不会是个问题,原来在action中做的,现在在后台绑定类(相当于service层)里做了,只是将原来action去除,原来是正对.do做权限控制的,现在在service层做权限控制还是一样,另外可能根据不同情况,写些正对.JSP后缀的权限过滤,这里只是举个例子,也可能是.html之类,注意:后缀其实只是个标识,.jsp并不一定就是JSP,.html不一定就是html,事实上权限控制最终还是交由service层来控制的,验证亦是如此.
0 请登录后投票
   发表时间:2010-10-30  
mvc只是程序设计的思路而已
0 请登录后投票
   发表时间:2010-10-30  
depravedangel 写道
qjtttt 写道

我倒是觉得RIA的发展和struts本身没什么很大的冲突,我只是对楼主的想法有个疑虑
虽说页面跳转的话确实RIA技术也可以做到,包括对于数据的增删改查,或许我们还可以直接对页面上某个组件的事件和数据源进行绑定操作,但是这里就有一个问题,都在客户端做这些事情的话,数据安全性,数据有效性的验证我们如何去做呢?
比方说,页面上一个表单,如果我们直接对表单进行绑定数据源,提交表单直接对数据库进行对应事件的操作
如果页面上某个text在业务逻辑里应该是存放一个float,而用户提交的时候text却是字母,而用户又别有用心的调试然后跳过你的js验证,甚至于某个页面展示的值实际是参与到最后的insert操作中的,而这个值可能是一个hidden可能是其他的element但是用户在提交前给你改了,直接绑定数据源就会很恐怖了
以上是我项目中有一个模块是N年以前写的,就是抛兄说的,vbs直接绑定数据源,呵呵,出过很大问题的
不过楼主的想法是好的,struts确实也是该有点更好的东西拿出来了,MVC也确实好多年了

你前台直接绑定数据源,那数据源是从哪儿来的?说到底不还是从后台service获取的。验证也是如此,前端是需要做验证的,但service层的验证也是必不可少的。所以您说的这个问题应该不会是个问题,原来在action中做的,现在在后台绑定类(相当于service层)里做了,只是将原来action去除,原来是正对.do做权限控制的,现在在service层做权限控制还是一样,另外可能根据不同情况,写些正对.JSP后缀的权限过滤,这里只是举个例子,也可能是.html之类,注意:后缀其实只是个标识,.jsp并不一定就是JSP,.html不一定就是html,事实上权限控制最终还是交由service层来控制的,验证亦是如此.


那么如果service验证失败了呢?这时候通常应该跳转到失败页面吧?这样的话实际上和struts的区别又会有多大呢?另外既然一个动作会有两个甚至N个结果,MVC的弱势又体现在哪里了呢?
0 请登录后投票
   发表时间:2010-11-01  
qjtttt 写道


那么如果service验证失败了呢?这时候通常应该跳转到失败页面吧?这样的话实际上和struts的区别又会有多大呢?另外既然一个动作会有两个甚至N个结果,MVC的弱势又体现在哪里了呢?

“那么如果service验证失败了呢?这时候通常应该跳转到失败页面吧?”这是因为您项目的设计主要是基于页面的。在RIA看来,后台交互的更多的是数据,而不是页面。所以在这个问题上,更多的还是受您当前项目的前期设计思路所影响
0 请登录后投票
   发表时间:2010-11-01  
depravedangel 写道
bigkai13 写道
MVC 这种模式不仅仅WEB中存在,SWING 也到处都是。 其实讨论STRUTS 存在的意义并来也就没意义,你不能拿一个10年前的思想模式套用现在的开发中。当然现在也是铺天盖地的SSH.面试上来用问SSH都有什么功能。感觉就像问一个木匠会不会用某种型号的电动螺丝刀。真正的木匠谁用电动的。非要说某种意义,那就是struts让初学者认识了什么是JAVA框架。一座楼房,我们只是砌砖而已。至于楼为什么这么盖,还是看源代码吧

可能是标题确实容易让人误导。我这边所指的其实是Struts这个MVC框架实现,我相信现在大家还是有好多人在用struts的,Ajax等技术的崛起,于是出现了Struts-JSON Plugin等一些后期处理方案。但这样开发总让人觉得有些别扭,我相信好多公司在结合Ajax、Struts开发的时候,只是将Struts当做一个简单的类来看待的,Action中的方法很多情况下都是返回JSON格式的数据(用的比较多的就是返回List,交由JSON Plugin之类的转化辅助包去处理)。其实在这种情况下struts是可有可无的了。

我相信国内目前的情况并不只是将SSH用来面试,还是有很多公司确确实实是在用SSH做开发的,偶尔也会加一些AJAX效果在里面。在这种情况下,讨论我所说的Strtus的意义何在才是我真正想表达的想法,可能确实是我表述误导大家了,抱歉......


struts1 有自己的ajax的标签,可以试试。不过JAR包不太好找
0 请登录后投票
   发表时间:2010-11-01   最后修改:2010-11-01
不存在意义:

确实ajax流行起来,struts 在ssh中开发可以有不存在的意义....

存在意义:

在封装大量数据(字段很多时),有存在的意义(像封装个人的详细资料时)..用struts封装方便快捷,如果用ajax封装操作起来比较麻烦

你的问题回答完毕.




可以看一下下面的回复,你那种框架是基于什么框架ajax做的。

http://www.iteye.com/topic/797690?page=2
0 请登录后投票
   发表时间:2010-11-01   最后修改:2010-11-01
已编辑          
0 请登录后投票
   发表时间:2010-11-02   最后修改:2010-11-02
depravedangel 写道
qjtttt 写道

我倒是觉得RIA的发展和struts本身没什么很大的冲突,我只是对楼主的想法有个疑虑
虽说页面跳转的话确实RIA技术也可以做到,包括对于数据的增删改查,或许我们还可以直接对页面上某个组件的事件和数据源进行绑定操作,但是这里就有一个问题,都在客户端做这些事情的话,数据安全性,数据有效性的验证我们如何去做呢?
比方说,页面上一个表单,如果我们直接对表单进行绑定数据源,提交表单直接对数据库进行对应事件的操作
如果页面上某个text在业务逻辑里应该是存放一个float,而用户提交的时候text却是字母,而用户又别有用心的调试然后跳过你的js验证,甚至于某个页面展示的值实际是参与到最后的insert操作中的,而这个值可能是一个hidden可能是其他的element但是用户在提交前给你改了,直接绑定数据源就会很恐怖了
以上是我项目中有一个模块是N年以前写的,就是抛兄说的,vbs直接绑定数据源,呵呵,出过很大问题的
不过楼主的想法是好的,struts确实也是该有点更好的东西拿出来了,MVC也确实好多年了

你前台直接绑定数据源,那数据源是从哪儿来的?说到底不还是从后台service获取的。验证也是如此,前端是需要做验证的,但service层的验证也是必不可少的。所以您说的这个问题应该不会是个问题,原来在action中做的,现在在后台绑定类(相当于service层)里做了,只是将原来action去除,原来是正对.do做权限控制的,现在在service层做权限控制还是一样,另外可能根据不同情况,写些正对.JSP后缀的权限过滤,这里只是举个例子,也可能是.html之类,注意:后缀其实只是个标识,.jsp并不一定就是JSP,.html不一定就是html,事实上权限控制最终还是交由service层来控制的,验证亦是如此.

当然抽象了之的问题解决起来很简单.
但4K多行代码中想要找到修正数据源的目标很困难.
找到想改的东西之后设计修改方式,
再在4K行代码中找到关联变动的代码
还要防止以前作过的check对你的设计是否有影响.

再之后....
祈祷上帝你的拼写一个字母都不要错....
不然......

在4k行代码中找到出错的字母过程中
http://www.iteye.com/topic/799570
0 请登录后投票
论坛首页 入门技术版

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