1. 只在必要时候才考虑扩展Struts框架
个好framework有很多优点首先它必须能够满足用户可预见需求为此 Struts为Web 应用提供了个通用架构这样开发人员可以把精力集中在如何解决实际业务问题上其次个好framework还必须能够在适当地方提供扩展接口以便应用能扩展该框架来更好适应使用者实际需要
如果Struts framework在任何场合任何项目中都能很好满足需求那真是太棒了但是实际上没有个框架声称能做到这点定会有些特定应用需求是框架开发者们无法预见到因此最好办法就是提供足够扩展接口使得开发工程师能够调整struts来更好符合他们特殊要求
在Struts framework中有很多地方可供扩展和定制几乎所有配置类都能被替换为某个用户定制版本这只要简单修改下Struts配置文件就可以做到
其他组件如ActionServlet和 RequestProcessor 也能用自定义版本代替. 甚至连Struts 1.1里才有新特性也是按照扩展原则来设计例如在异常处理机制中就允许用户定制异常处理句柄以便更好对应用系统发生做出响应
作为框架这种可调整特性在它更适合你应用同时也在很大程度上影响了项目开发效果首先由于您应用是基于个现有成熟、稳定framework如Struts测试过程中发现数量将会大大减少同时也能缩短开发时间和减少资源投入你不再需要投入开发力量用于编写基础框架代码了
然而, 实现更多功能是要花费更大代价我们必须小心避免不必要滥用扩展性能 Struts是由核心包加上很多工具包构成它们已经提供了很多已经实现功能因此不要盲目扩展Struts框架要先确定能不能采用其他思路方法使用现有功能来实现 在决定编写扩展代码前务必要确认Struts确没有实现你要功能否则重复功能会导致混乱将来还得花费额外精力清除它
2. 使用异常处理声明
要定义应用逻辑流程成熟经验是推荐在代码的外用配置思路方法来实现而不是写死在代码中在J2EE中这样例子比比皆是从实现EJB安全性和事务性行为到描述JMS消息和目地的间关系很多运行时处理流程都是可以在的外定义
Struts 创建者从开始就采用这种思路方法通过配置Struts配置文件来定制应用系统运行时各个方面这点在版本1.1新特性上得到延续包括新异常处理功能在Struts framework以前版本中开发人员不得不自己处理Struts应用中发生情况在最新版本中情况大大改观了Struts Framework提供了内置个称为 ExceptionHandler 类 用于系统缺省处理action类运行中产生这也是在上个窍门技巧中我们提到framework许多可扩展接口的
Struts缺省 ExceptionHandler类会生成个ActionError对象并保存在适当范围(scope)对象中这样就允许JSP页面使用类来提醒用户出现什么问题如果你认为这不能满足你需求那么可以很方便实现你自己ExcepionHandler类
具体定制异常处理思路方法和机制
要定制自己异常处理机制第步是继承org.apache.struts.action.ExceptionHandler类这个类有2个思路方法可以覆盖个是excute另外个是storeException. 在多数情况下只需要覆盖其中excute思路方法下面是ExceptionHandler类excute思路方法声明:
由于值存放在个Map对象所以要记得对get思路方法返回Object对象做强制性类型转换
DynaActionForm有好几个很有用子类其中最重要是DynaValidatorForm 这个动态ActionForm和Validator 起利用公共Validator包来提供自动验证这个特性使你得以在代码的外指定验证规则将两个特性结合使用对开发人员来说将非常有吸引力
7. 使用可视化工具
自从Struts 1.0 分布以来就出现了不少可视化工具用于协助创建修改和维护Struts配置文件配置文件本身是基于XML格式在大中型开发应用中会增大变得很笨拙为了更方便管理这些文件旦文件大到你无法目了然时候建议试着采用其中种GUI 工具协助开发商业性和开放源代码工具都有不少表1列出了可用工具和其相关链接从那里可以获取更多信息
表 1. Struts GUI 工具
应用 性质 网址
Adalon 商业软件Software http://www.synthis.com/products/adalon
Easy Struts 开放源码 http://easystruts.sourceforge.net/
Struts Console 免费 http://www.jamesholmes.com/struts/console
JForms 商业软件Software http://www.solanasoft.com/
Camino 商业软件Software http://www.scioworks.com/scioworks_camino.html
Struts Builder 开放源码 http://sourceforge.net/projects/rivernorth/
StrutsGUI 免费 http://www.alien-factory.co.uk/struts/struts-index.html
最新评论