struts2和1的区别

先大致介绍下struts1和struts2

struts:过去最流行的web MVC组件,apache项目组的一个开源项目。

struts2:现在非常流行的web MVC组件,是apache用struts1和webwork组合出来的产品。

两者都是web MVC组件,利用这两个组件都可以比较方便地开发web项目。不过struts1毕竟是老组件,在人们开发过程中,发现了如下问题:

1.struts1支持的表现层技术太单一,就只有jsp。不支持freemaker、velocity等当前比较流行的页面技术。

2.struts1的Action与servlet API过于耦合,难以测试。这一点对于初学者来说可能没什么感觉,只有你用它开发过大型项目才知道。企业开发过程中,我们既要写正式代码,也要写相应的测试代码(即单元测试类,以此来保证代码是符合我们预期的),如果正式代码和servlet API耦合太深,会造成你的测试类难以编写,一旦离开web服务器就会难以测试。

3.struts1属于侵入式设计,也就是说,在你的代码里,除了你自己定义的类之外,还会包含struts1的API。倒不是说这样的设计有多么差,毕竟你用别人的组件,少不了会用到别人的API。只是这样的设计会影响代码的重用,如果需要重构,就会比较麻烦。

以上就是struts1的主要缺点,作为大改之后的struts2,对以上问题都做了改进:

1.struts2支持多种表现层技术,如freemaker、velocity都支持。

2.struts2中,Action不再与servlet API耦合(当然了,你希望在Action里使用servlet API也行),便于编写单元测试类。

3.Action不需要和struts2耦合,方便重用。

至于更详细的区别,网上很多,有些还用列表形式列出来了,我这里就不copy了。总之,虽然都叫struts,但是两者差别挺大的,设计思想都不一样。建议你运用这两个组件各自实现同一个小项目,自然就明白差别了。

原文地址:https://www.cnblogs.com/yuyu666/p/9795566.html