看struts2也有一些时间了,虽然没有非常非常投入的学,但还是大概地有些了解了,也能够用来做些简单的东西了
但有些现象还是引起我的注意了,一方面有少数的同学在看struts2,另一方面大多数的还是都在看struts1,所以就相当疑惑自己究竟是应该学习struts1还是struts2
虽然我自己觉得struts2在各个方面都要比struts1好用,但毕竟现在是行业在引导我们,就算自己学好了struts2,再回过头来学习struts1或许不是难事,但还是会花些许时间的
又或者说,现在外面企业里更加普遍地是在使用struts1还是struts2
问题补充:
可能是我描述的不够清楚吧
struts2肯定是比struts1要好用的,也容易学的,这个我自己在学习的过程中已经体会到了,而且struts2个人觉得也是蛮简单的,学起来没什么问题
我只是更加有兴趣想知道在企业中两者的使用状况
毕竟我学这个还是考虑到就业的问题,否则就直接jsp+servlet了
问题补充:
回答一下 汪兆铭
大家都知道企业中一个新技术的更新是要考虑很多问题的啊,而不仅仅是一个新的技术要优秀就丢掉原先的而采用这个新的,这根本就是不现实的嘛
问题补充:
我还是学生,没有真正的软件开发经验,但我个人觉得一个企业选择一种新技术而放弃原先使用的技术至少会以下几点:
1.这个新技术是否成熟,使用的时候会不会引发什么问题,或者引发的问题有没有解决的方法;
2.公司更新到这个新技术要花费多大的投入,如果引进这个新的技术创造的价值比要花费的代价还要大,肯定是没有企业会引进的;
3. 企业目前的状况适不适合引进这个新技术,如果大家都非常熟悉原先的旧技术了,采用这些旧技术完全可以满足现有的需求,那么,应该也是不会更新的。
其他的话,再想想,应该可以再想到些什么的
问题补充:
你一直在彷徨....有这些时间你都足够把两个框架全部搞定了。。。请早日结贴...
lixindiy (初级程序员)
呵呵~~我不知道你是怎么知道我一直在彷徨,没有学习的?有点好奇,想听下你推断的理由。我一直都在学啊,现在struts2跟hibernate都可以做基本的应用了,这些天就在用这两个框架写一个小系统
我不结贴肯定是有我的原因噻,如果我结了贴,就说明这个问题的讨论结束了,没有人会再关注,但我不结贴,就会有人再关注,大家就会再讨论,或许可以得到一些什么更有想法和新意的结论呢?
无论怎样,还是谢谢你的关注,哈哈
事实上,从国内应用情况看,Struts 2 并没有那么乐观,真正用的公司不是很多,而且可以说都是新项目,或者新兴的公司才会采用。
对于一些有了几年积累下来的公司,产品怎么可能一下切换到Struts 2呢?
其实最重要的是基础,这个常常被忽略。
Servlet, JSP 标准是 java web 的基础,没有深刻的学习和了解,怎么可能用好一个web 框架。
直接struts2 巨好用的东东
struts1还是struts2,其实,如果是新项目的话都差不多是用struts2了,现在和以后的主流啊,struts1的话很多都是遗留的系统啦,
struts2建议你好好去深入研究一下,它的设计架构思想非常好,松耦合,灵活性,等等,性能也不错,
struts可以不用学
struts2 与spring mvc各选一个,都是非常好的mvc框架
而且sttuts2 就业更好一些!招struts2招的工作多一点!
spring mvc基于anno 的方式开发非常爽爽!
struts已经淘汰了,可以不用学,而且也不会降低你学struts2人成本,还不如直接上!
我从2002 年开始使用 Struts 1,直到最近这家公司(虽然此时我也不愿意用它,但是公司要求),还在用 Struts 1.x。
Struts 的两个MVC实现框架你都得学...因为在做开发的时候肯定都回接触到的。
我个人给你的建议是:
1、首先学习Struts2,因为Struts2是基于WebWork的框架,弥补了Struts1的好多设计上的缺陷,举例比如说Struts1 的FromBean,你可以查一查,很多人都喊它为鸡肋的...
2、你学习Struts2之后回头在来看一下Struts1,你就会有一种从高向下看的感觉,会更好的理解Struts2的有点、Struts1的诟病...
Struts2相对学习起来还是比较容易的....呵呵,给你些信心!! Good Luck...
struts 使用上没有太大的难度,基本上好的公司都已经开始摒弃了,他有点笨重了!影响开发速度。
像struts2的使用慢慢的多起来很大的原因还是占了struts原来的名声。现在已经有很多企业开始选用struts2
同时也有非常多的企业开始选择spring mvc
因为spring mvc的使用点击轻便,相对于原来的mvc实现,更重要的是现在基于注解的spring mvc开发速度上更是远远大于原来的struts.
但是从学习角度来说学哪个mvc框架都一样,只要会用一个就行了,然后到了公司再学也行。
或者精学一种mvc,略学另一种,不至于面试的时候别人答不上来,到了公司现学也是没有问题!
可以参考另一个问答:[url]http://www.iteye.com/problems/14906[/url]
Struts1和Struts2的区别和对比
• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。
• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去 实现 常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
线程模式:
• Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
• Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet 依赖:
• Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。
• Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
可测性:
• 测试Struts1 Action的一个主要问题是execute方法暴露了servlet API(这使得测试要依赖于容器)。一个第三方扩展--Struts TestCase--提供了一套Struts1的模拟对象(来进行测试)。
• Struts 2 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
捕获输入:
• Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经 常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。
• Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。
表达式语言:
• Struts1 整合了JSTL,因此使用JSTL EL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
• Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"Object Graph Notation Language" (OGNL).
绑定值到页面(view):
• Struts 1使用标准JSP机制把对象绑定到页面中来访问。
• Struts 2 使用 "ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
类型转换:
• Struts 1 ActionForm 属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
• Struts2 使用OGNL进行类型转换。提供基本和常用对象的转换器。
校验:
• Struts 1支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。
• Struts2支持通过validate方法和XWork校验框架来进行校验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性
Action执行的控制:
• Struts1支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。
• Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。
一个企业在选择框架的时候有几个要素,
第一要看团队大部分人熟悉那个,例如struts1和struts2 ,基本上企业的老员工都熟悉struts1,
第二要看在框架上面遇到问题,项目经理自己是否有能力解决,或者有技术比较牛的人可以解决,
第三,开发速度和开发成本,可以想想找一个会struts1容易还是找一个会struts2的人容易,就明白了
综合,以上要素,基本上struts1的使用率会高于struts2,但是struts2学着也没关系,因为技术总要进步,以后肯定可以用得上
我觉得struts2应该比struts1好,1出现的比较早,2好像跟别人学的,比以前的更合理,其它人不想升级,是因为都习惯了,而且有学习成本、
struts1和struts2,看起来名字差不多,但是完全不是,容易改出学者误会,
struts2是struts1和webwork2整合在一起的,但是基本上就是webwork2。
所以他们两个可以说是完全不一样的。
你要学,可以分开来学。
可以明确的告诉你:
第一.现在一般企业Struts1和Struts2 都会用到(其实学一下很简单,花不了多长时间的,很快就可以上手);
第二.Struts2(WebWork2)一般新项目都会用到,不过有很多企业的老系统用的是Struts1,所以不会Struts1对找工作是有很大影响的。可以上网搜一下,很多公司要求要会Struts1的。
第三.国内开发软件所用的技术一向是很滞后的,系统的稳定对于公司来说更加重要(这也本人觉得跟国外比没有什么竞争优势的地方)。
不管什么web框架,真正好好使用,能够驾驭它,还是要学习 Servlet 和 JSP。
如果连这个基础都不懂,谈什么 java web 开发。
就企业使用情况,一些大公司的技术使用要保守得多,所以可以 struts 1.x 还是比 struts2 应用得广泛一些。
这是个问题哟,现在大部分公司用的还是struts1.x的版本。 所以在学struts2之前还是先学习struts1.x啊。[b][/b]
struts1还是struts2,其实,如果是新项目的话都差不多是用struts2了,现在和以后的主流啊,struts1的话很多都是遗留的系统啦,
struts2建议你好好去深入研究一下,它的设计架构思想非常好,松耦合,灵活性,等等,性能也不错,
就业职位当然也是看主流框架的趋势,struts2要的比较多
Struts是MVC的第一个规范,我觉得应该来说Struts2应该还是多些!
我直接就学了Struts2,Struts1只听说了一下。
lz我问你个问题,既然你觉得struts2比struts1好,既然Struts1有这么多缺点,你说企业为什么用Struts1呢?
Struts1现在应该也就是维护旧的系统时用用了,如果做一个新系统,现在主流的MVC框架要么就是Struts2,要么就用SpringMVC。相对来说我比较看好Struts2。
[b]Struts1.x和Struts2.x用的都是比较多的,要根据公司的情况,呵呵...so跟人感觉你很有必要都学习一下...学习方法采用我之前回答你的方法[/b]
是啊,如果旧的系统是用Struts1开发的,如果能完美切换到Struts2那最好了,如果没办法切换到Struts2,当然只能继续用Struts1了。所以我说Struts1现在应该也就是维护旧的系统时用用了。
其它方面好像没有什么好考虑的吧?能否说说你考虑的是什么呢?
不管基于什么考虑,对于Java web 开发来讲,Servlet 和 JSP标准必须很熟悉。
struts 2 架构先进,是不是能带来开发效率呢?
1.如果是使用 xml配置,它的配置量不亚于struts 1。
2.如果使用 struts 2.1.6 中的convention插件,很大程度上体现了COC,但做得还不够,很多时候它只是xml的翻译,它还没有像RoR那样充分利用语言本身的特性。
3.Struts2 相对来说复杂,如果想真正驾驭struts2,要理解 xwork 和 ognl 的原理。
4.ognl一直是很多人推崇的东西,但我可以说很多人不喜欢,包括我在内,Tapestry的作者曾经也在自己的博客中对其大吐口水,它已经想在后续的版本会把ognl踢出tapestry,一方面ognl要重新学习,增加了学习成本,另一方面,它效率低下,这个在Tapestry的作者的博客中提供了数据分析,三,与现在的jstl体系格格不入,四,与之相配的struts taglib相当罗嗦,不够简洁。
5.Struts 2 的发展目前受xwork,ognl的制约,虽然Struts 2 最初就定下基于java 5,但没有充分发挥java 5的语言特性。相对新兴的框架,如stripes,seam 等,struts 2 有些方面的处理还是和struts 1在同一个级别上,如多按钮表单的处理,如果用过stripes,你就感觉他是在这方面是多么优雅。
struts已经是mvc开发的标准,但随着webwork和struts的合并(Struts2),试问将来struts还用不用于开发项目,struts2是否会取代struts?
下面简单介绍写两者的区别和发展。
struts是2001年发布的。这个发布时间比webwork早一年,IT世界就是这个原理,时间决定一切。早一分钟还晚一分钟可能会导致两重天。由于企业迫切需要个mvc开发标准,因此struts自然荣登宝座。但是虽然框架的发展,struts显出拉很多弊病。比如说它的action与serlvet严重耦合导致测试困难和扩展性受到挑战,还有貌似鸡肋的ActionForm一直是开发者疑惑的问题。但是webwork确实很好的解决拉这些问题,因为发布时间慢拉一年,导致现在发展的尴尬局面,但是不少开发者仍用webwork,由于企业界的需求,struts2诞生拉。
struts2完全摒弃拉鸡肋actionform,解决拉与servlet耦合性。它的action是一个普通的pojo,因此很容易测试。使用junit就能简单测试。这可带来的革命性的改善,我个人感觉。还有一点,笔者认为struts2的标签要比sturts的标签好使的多,标签少但是功能却不比struts的少,相信使用过sturt的开发者,一定会对struts的标签使用有很深的感触吧。另外struts2还有很多其他特性,比如interceptor,ioc更容易和其他框架整合而不用安装插件。还有struts2支持各种表达式和模板引擎。这也是比struts优秀的部分。 Struts2是WebWork的升级,而不是Struts的升级。虽然Struts 2提供了与Struts的兼容,但也不是Struts的升级。对于熟练学习Struts开发的开发者而言,Struts的开发经验对于Struts2并没有多大的帮助;但是对于已经有WebWork开发经验的开发者而言,会使webwork那么一定会使struts2拉。
不管用什么框架,用才是最重要的,嘴巴上讨论得再多了没有意义,什么东西都要靠自己去尝试,别人说得再好,也是别人的想法。
我的博客上有一些资料,几年前翻译的东西,对于spring初学者应该有用。
Spring Quick Started Guide (Struts ,Hibernate ,Spring 使用 TDD 方法创建一个CRUD程序,此文档为Spring Live 第二章)
[url]http://blog.chinaunix.net/u/1096/showart_13786.html[/url]
Spring Live 全书
[url]http://blog.chinaunix.net/u/1096/article_37223.html [/url]
暂时没有struts 2相关资料,不过最近准备写一些 Struts 2 的东西。
如果你对Stripes感兴趣,可以下载我写的Stripes入门文档。
[url]http://www.iteye.com/news/6645-my-first-free-book-quot-stripes-quick-start-quot-officially-available-for-download[/url]
[quote]1.这个新技术是否成熟,使用的时候会不会引发什么问题,或者引发的问题有没有解决的方法; [/quote]
Struts2是WebWork的升级版本,WebWork之前已经是一个很成熟的MVC框架了。现在网络上Struts2相关的讨论、资料也很多了。
[quote]2.公司更新到这个新技术要花费多大的投入,如果引进这个新的技术创造的价值比要花费的代价还要大,肯定是没有企业会引进的; [/quote]
所以前面一开始不是说了嘛,维护旧的项目要考虑你说的这一点,只有这种情况下才会有这个问题吧。如果做新的项目,可以说没有代价。如果新系统的开发使用Struts1还真不如用Struts2,这是毫无疑问的。
[quote]3. 企业目前的状况适不适合引进这个新技术,如果大家都非常熟悉原先的旧技术了,采用这些旧技术完全可以满足现有的需求,那么,应该也是不会更新的。 [/quote]
这个不是问题。如果一个开发人员觉得毕业了找到工作,就靠着学会的那些东西就够用一辈子,不用再学习了,那他不适合做开发。既然Struts2比Struts1好,而且能使开发更容易,为什么不学不用呢?
struts2.x肯定是很成熟的技术,之所以有许多人用是因为它流行,现在许多人都在用这个,基本上招进来的人都能马上用它开发发,如果用其实的技术的话,也许企业招进来的人还要培训,这无疑增加了成来...
请早日结贴....
[b]你一直在彷徨....有这些时间你都足够把两个框架全部搞定了。。。请早日结贴...[/b]
如果你热爱技术,就把struts2的源代码抄一遍!只做一类应用,不要为了工作去学习。如果你为了工作,别学了,现在没有多少应届生能找到对口的工作。招java工程师
的公司大部分要工作经验的。还有做开发人员是没有时间交女朋友的,这是很要命的!
当然是struts2