优点:
1)、实现了MVC模式,结构清晰,是开发者只关注业务逻辑的实现,实现了表现与逻辑分离
2)、提供了一套丰富的标签,能大大提高开发效率
3)、页面导航:使系统的脉络更加清晰。通过struts-config.xml配置文件,即可把握整个系统各部分之间的联系,这对后期的维护有利。尤其是对接手遗留项目,优势更明显
4)、维护扩展方便
5)、便于团队开发
6)、提供Exception处理机制
7)、支持数据库连接池管理
8)、支持 I18N
缺点:
1)、转到展示层是,需要配置多个forward的,如果有多个展示层页面,就得配置多个forward,而且如果是tomcat服务器,每次配置完后都得重启tomcat服务器。
2)、Struts1 的Action是线程不安全的,只允许一个实例处理请求,所以action用到的资源必须进行同步处理。因为struts1的action是单实例的
3)、测试需要依赖容器,Struts1 的action个web层偶合在一起,所以测试依赖web容器,单元测试难实现。但可以用Junit扩展工具Struts TestCase可以进行单元测试
4)、类型转换,Struts的FormBean把所有的数据都作为String类型的,可以使用Bean-Utils进行类型转换。但它的转化都是在Class级别的,而且转化的类型是不可配置的。类型转化时的错误信息很难返回给客户很困难。
5、对Servlet的依赖性过强,Struts处理Action时,必须要依赖ServletRequest和ServletResponse
6、前端表达式语言放方面。struts处理Actions集成了JSTL,所以它主要是使用JSTL的表达式语言来获取数据。可是JSTL对Collection和索引属性方面处理显的很弱
7、对Action执行的顺序困难,除非新建一个Servlet来实现这个需求
8、很难在Action处理前和后进行操作
9、对事件支持不够。struts1中实际是一个Form表单应一个Action,也就是说Stuts中是一个表单只能对应一个事件。