Struts优缺点剖析 开源是把双刃剑?
Struts优缺点跟Tomcat Turbine等诸多Apache项目一样 是开源软件 这是它的一大优点 使开发者能更深入的了解其内部实现机制
Struts开放源码框架的创建是为了使开发者在构建基于Java Servlet和JavaServer Pages(JSP)技术的Web应用时更加容易 Struts框架为开放者提供了一个统一的标准框架 通过使用Struts作为基础 开发者能够更专注于应用程序的商业逻辑 Struts框架本身是使用Java Servlet和JavaServer Pages技术的一种Model View Controller(MVC)实现 具体来讲
Struts优点有
实现MVC模式 结构清晰 使开发者只关注业务逻辑的实现
有丰富的tag可以用 Struts的标记库(Taglib) 如能灵活动用 则能大大提高开发效率 另外 就目前国内的JSP开发者而言 除了使用JSP自带的常用标记外 很少开发自己的标记 或许Struts是一个很好的起点
页面导航 页面导航将是今后的一个发展方向 事实上 这样做 使系统的脉络更加清晰 通过一个配置文件 即可把握整个系统各部分之间的联系 这对于后期的维护有着莫大的好处 尤其是当另一批开发者接手这个项目时 这种优势体现得更加明显
提供Exception处理机制
数据库链接池管理
支持I N
Struts缺点
一 转到展示层时 需要配置forward 每一次转到展示层 相信大多数都是直接转到jsp 而涉及到转向 需要配置forward 如果有十个展示层的jsp 需要配置十次struts 而且还不包括有时候目录 文件变更 需要重新修改forward 注意 每次修改配置之后 要求重新部署整个项目 而tomcate这样的服务器 还必须重新启动服务器 如果业务变更复杂频繁的系统 这样的操作简单不可想象 现在就是这样 几十上百个人同时在线使用我们的系统 大家可以想象一下 我的烦恼有多大
二 Struts 的Action必需是thread-safe方式 它仅仅允许一个实例去处理所有的请求 所以action用到的所有的资源都必需统一同步 这个就引起了线程安全的问题
三 测试不方便 Struts的每个Action都同Web层耦合在一起 这样它的测试依赖于Web容器 单元测试也很难实现 不过有一个Junit的扩展工具Struts TestCase可以实现它的单元测试
四 类型的转换 Struts的FormBean把所有的数据都作为String类型 它可以使用工具Commons Beanutils进行类型转化 但它的转化都是在Class级别 而且转化的类型是不可配置的 类型转化时的错误信息返回给用户也是非常困难的
五 对Servlet的依赖性过强 Struts处理Action时必需要依赖ServletRequest 和ServletResponse 所有它摆脱不了Servlet容器
六 前端表达式语言方面 Struts集成了JSTL 所以它主要使用JSTL的表达式语言来获取数据 可是JSTL的表达式语言在Collection和索引属性方面处理显得很弱
七 对Action执行的控制困难 Struts创建一个Action 如果想控制它的执行顺序将会非常困难 甚至你要重新去写Servlet来实现你的这个功能需求
八 对Action 执行前和后的处理 Struts处理Action的时候是基于class的hierarchies 很难在action处理前和后进行操作
九 对事件支持不够 在struts中 实际是一个表单Form对应一个Action类(或DispatchAction) 换一句话说 在Struts中实际是一个表单只能对应一个事件 struts这种事件方式称为application event application event和ponent event相比是一种粗粒度的事件 Struts重要的表单对象ActionForm是一种对象 它代表了一种应用 这个对象中至少包含几个字段 这些字段是Jsp页面表单中的input字段 因为一个表单对应一个事件 所以 当我们需要将事件粒度细化到表单中这些字段时 也就是说 一个字段对应一个事件时 单纯使用Struts就不太可能 当然通过结合JavaScript也是可以转弯实现的
lishixinzhi/Article/program/Java/ky/201311/27961