struts1还是struts2

看struts2也有一些时间了,虽然没有非常非常投入的学,但还是大概地有些了解了,也能够用来做些简单的东西了
但有些现象还是引起我的注意了,一方面有少数的同学在看struts2,另一方面大多数的还是都在看struts1,所以就相当疑惑自己究竟是应该学习struts1还是struts2
虽然我自己觉得struts2在各个方面都要比struts1好用,但毕竟现在是行业在引导我们,就算自己学好了struts2,再回过头来学习struts1或许不是难事,但还是会花些许时间的
又或者说,现在外面企业里更加普遍地是在使用struts1还是struts2
问题补充:
可能是我描述的不够清楚吧
struts2肯定是比struts1要好用的,也容易学的,这个我自己在学习的过程中已经体会到了,而且struts2个人觉得也是蛮简单的,学起来没什么问题
我只是更加有兴趣想知道在企业中两者的使用状况
毕竟我学这个还是考虑到就业的问题,否则就直接jsp+servlet了
问题补充:
回答一下 汪兆铭
大家都知道企业中一个新技术的更新是要考虑很多问题的啊,而不仅仅是一个新的技术要优秀就丢掉原先的而采用这个新的,这根本就是不现实的嘛
问题补充:
我还是学生,没有真正的软件开发经验,但我个人觉得一个企业选择一种新技术而放弃原先使用的技术至少会以下几点:
1.这个新技术是否成熟,使用的时候会不会引发什么问题,或者引发的问题有没有解决的方法;
2.公司更新到这个新技术要花费多大的投入,如果引进这个新的技术创造的价值比要花费的代价还要大,肯定是没有企业会引进的;
3. 企业目前的状况适不适合引进这个新技术,如果大家都非常熟悉原先的旧技术了,采用这些旧技术完全可以满足现有的需求,那么,应该也是不会更新的。
其他的话,再想想,应该可以再想到些什么的
问题补充:
你一直在彷徨....有这些时间你都足够把两个框架全部搞定了。。。请早日结贴...
lixindiy (初级程序员)

呵呵~~我不知道你是怎么知道我一直在彷徨,没有学习的?有点好奇,想听下你推断的理由。我一直都在学啊,现在struts2跟hibernate都可以做基本的应用了,这些天就在用这两个框架写一个小系统
我不结贴肯定是有我的原因噻,如果我结了贴,就说明这个问题的讨论结束了,没有人会再关注,但我不结贴,就会有人再关注,大家就会再讨论,或许可以得到一些什么更有想法和新意的结论呢?
无论怎样,还是谢谢你的关注,哈哈

31个回答

事实上,从国内应用情况看,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学着也没关系,因为技术总要进步,以后肯定可以用得上

共31条数据 1 3 4 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐