您的位置:程序门 -> java -> j2se / 基础类



struts 的优越性


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


struts 的优越性[已结贴,结贴人:asdfcvzxa]
发表于:2008-01-11 08:49:24 楼主
在使用   struts   的过程中越来越感觉到它的意义!
用   struts   所做的一切,完全可以用   filter   +   servlet   +   jsp   +   bean     来代替!servlet   用来控制业务流程jsp   用来显示页面   bean   进行业务逻辑   filter   进行验证!
在用   struts   写代码的过程中,如果把   action   做为控制层来使用,由它去调用某个业务   bean   实现业务逻辑,那么感觉就和   filter   +   servlet   +   jsp   +   bean     一样。
哪位朋友能告之,   struts   比   filter   +   servlet   +   jsp   +   bean   有什么它所独有的长处吗?
还有就是   actionform   这个东西,它是用来封装表单的,可是我完全可以用   request.getparameter("..");来获取表单中的内容啊,它又有什么自己的独到之处呢?
发表于:2008-01-11 09:06:341楼 得分:2
主要是它的mvc模式吧,再就是struts里面附带了一些东西。
发表于:2008-01-11 09:07:012楼 得分:0
sf
发表于:2008-01-11 09:17:523楼 得分:5
个人理解为从功能上说没任何区别,struts分解开来本身就是这几样东西,只是集成在一起不用写很多代码和实现mvc,也就是jsp与javabean还有servlet的联系通过配置文件web.xml和struts-config.xml联系,从而实现了松耦合,使得他们更加独立,就像java类一样,封装起来.
发表于:2008-01-11 09:22:054楼 得分:8
struts也是由最基本的技术组成,就跟我们使用jdbc一样,有人可以说,我用反射做映射,照样可以实现sql-> 对象封装,没什么了不起的嘛~

以前肯定也有很多人实现类似于struts这样的框架,如果楼主早出生几年,也许也是打算用这些基本技术搭建自己的框架的人。

在这些框架中,有很多被淘汰,剩下的自然是好的了,至于它为什么好,你可以尝试完成两个相同的项目,一个采用基本技术,一个采用struts,做一下比较。

struts会的人多,节省培训成本,在大项目中,开发方便快捷,小孩过家家的项目用什么就无所谓了。

ps:普通开发你得用request.getparameter("..");来获取变量的值,而actionform可以帮助你完成这些,你一句话都不用写;如果一个页面有500字段,那actionform作用就大大的喽~
发表于:2008-01-11 09:37:195楼 得分:20
actionform以我看来,严格地划分应该属于表示层的东西,在这里面除了获得
一些表单数据之外,还有一点就是可以对表单中输入的值进行服务端验证。从而
达到分而治之的原则。

当然了要使用filter+sevlet也未偿不可,只是struts进行了更高层次的封装,
让开发变得更为方便、快捷一些。比如资源文件配置、页面导向配置,再者使用
struts的一些标签也更为方便。

使用filter+servlet对于比较大的应用来说,得在web.xml配上一大堆的东西
像一个filter、servlet要配两个元素,如果采用filter来验证表单数据的话
也是相当繁锁的。一般来说filter用于配置一些编码、权限等每个请求都必须做
的事情,等于在其中夹一层,就像aop那种。

现在开发过程中都强调应用的可配置化,也就是把一些今后可能会变动的参数置
于配置文件中,而不是写死在代码里,采用filter+servlet写的话也可以进行
参数配置,但这些事情都必须由你自己来完成,而这些都是一些mvc框架内部自
行做掉的事情。

采用filter+servlet的话做的事情,只不过是像struts的那些mvc框架底层做
的事情,就有点重复发明轮子了。
发表于:2008-01-11 09:44:046楼 得分:0
当然了,使用框架也有一定的缺点,就是效率远不及采用传统的实现。

比如:采用struts要比采用servlet慢,采用hibernate要比采用jdbc慢。。。

因为这些框架为了达到可配置化的层次,基本上都采用反射机制,而采用
反射生成对象的效率要比直接new生成对象效率的速度慢了成百上千倍。
尽管这样,看在他们都提供了很多优秀功能、让开发速度提高的基础上牺
牲一些效率是比较值得的。
发表于:2008-01-11 09:45:337楼 得分:0
4楼朋友,感谢你的回答,你提到   “如果一个页面有500字段,那actionform作用就大大的喽   ”
但如果一个页面有   500   个字段,我如果使用   actionform   的话能有哪些方便呢?不也要写很多   actionform.get..();   来获取页面中的字段吗?
方便的也只是:原来需要把500个字段名当作参数写出,而用了   actionform   的话,就一个点,就能点出一个get方法来来获取这个字段吧?再有就是:如果希望用户提交的表单在这   session   范围内有效的话,才可体现其价值吧?
不好意思,我不是抬杠,只是想知道这东西到底有多大的意义!
发表于:2008-01-11 09:46:188楼 得分:0
楼主,这说明你进步了!本来struts也没有什么嘛。改天自己实现一个,只要不是完成jasper那样的东西,都没有啥难度。
接下来看看rest。研究一下中间件怎么更好的支持web2.0。
发表于:2008-01-11 10:01:339楼 得分:0
struts1中之所以有actionform,可能是由于它是古老的mvc框架之一吧,
是首先吃螃蟹的,由于没有什么可以借鉴参考的,在日后逐渐地缺陷也就产
生了。

在struts2中完全抛弃了actionform,采用了webwork的架构,使得框架与
容器间的耦合度再下降了一层。
发表于:2008-01-11 10:05:2010楼 得分:0
to   火龙果  
谢谢你的回复!
首先说,我还不能很好的应用   struts   ?
说到   struts   的验证功能!我没有去使用的太多,可能是先入为主吧,用   filter   进行验证已经习惯了!
问一句:     struts   中的验证很强大吗?验证功能很全面吗?是不是只能进行一些类似   “不能为空”   “字符串长度的约束”   等等基础的验证呢?如果我希望验证字符串的内容:例如字符串中不能有特殊字符。那么   struts   中的验证机制,还能进行验证吗?我只是举这个例子。我的意思是   struts   中的验证操作有没有不能验证的东西呢?
发表于:2008-01-11 10:09:4311楼 得分:0
8楼   一看你就只到你是高人,你那些想法很独特!很敢去想啊!相信你在学习中都不会有任何疑问吧?啊?高人?
发表于:2008-01-11 10:18:0512楼 得分:0
唉,struts1的东西,用着用着,你就想吐,
实在想用,最好自己改造一下。
发表于:2008-01-11 10:22:3213楼 得分:5
j2ee,或者说javaee,已经走了很久了,里面有些东西不太符合今天的web开发了,为什么ror会异军突起呢?
因为ror是个更好的支持rest思想的架构,而并不只是因为它简单。
老实讲,ruby的语法复杂性是很高的,比java难理解。用ruby的人往往是有过多年开发经验的人。
其实我不会j2ee的,我就是跟着wingc实现过一个最简单的servlet容器而已,但是我感觉这个跟cgi时代的思想还是很接近的。
现在在ibm内,一部分的web开发依然使用j2ee的中间件,但是并不写jsp和servlet了。而是转向rest思想。
servlet仅仅起到一个转发的作用,而上面可能采用基于osgi的bundle实现的一些service来进行服务。
中间件应该往这个方向去努力。

发表于:2008-01-11 10:29:1614楼 得分:0
哦,有本电子书,叫osgi实战什么的,可以看看osgi怎么和spring整合到一起。然后就容易让这方面想了。
我只会想,不会做,我连css怎么弄都不会。
发表于:2008-01-11 10:49:4015楼 得分:0
我的意思并不是说struts是万能,只是将一些底层的东西做了一定的封装罢了。
让开发者不需要了解其更多的底层实现,让应用更易于维护、开发的效率更一些。

以我看来,框架本身就没有好坏之分,只要能适合应用的就是最好的。

我前面也提到过,由于struts自身设计上的缺陷,会导致某些部分较为复杂,且
与servlet容器紧密地耦合在一起了,但是它也在不断地改进之中,不断汲取其他
优秀框架的经验。

它肯定不是最优秀的,但它是最经典的。

over
发表于:2008-01-11 11:04:0616楼 得分:0
啊!谢了!
我是   java   的初学者!所以可能会有很多不入流的想法与疑问!感谢大家的热心指教!
to   14   楼的朋友,觉得你应该改名,“甘草”不合适!“仙人掌”更贴切
结贴了!再次感谢大家!
发表于:2008-01-11 11:06:3217楼 得分:0
。。。   。。。


快速检索

最新资讯
热门点击