先大致介绍下struts1和struts2 struts1的作用,它是MVC设计思想的一个实现,是一个框架,能够减少程序员编写代码,方便维护。 struts1:过去最流行的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耦合,方便重用。