Struts 2

tirry_niit同行在 http://javaresearch.org/article/63242.htm引用的有一个Apache Struts 2的一个介绍.我作一些补充。补充内容均基于2007-3-3前从Apache网站上看到的所有 Struts 2.0.6 的文档.   
   Struts2的一个亮点是不再有ActionForm.即不在强制要求开发者实现MVC中的M,这点是很重要的,模型总是跟业务逻辑相关,任何一个Web开发框架都不可能处理好M部分。以前版本会出现的问题是:
 1)大量的ActionForm,大量相似的业务逻辑对象。
 2)让Web开发者感受不到OO编程的乐趣。因为他们首先要面对的是ActionForm,这是一个很无聊的对象。
Struts2很好的实现了V/O Mapping(即视图层到业务对象的映射,我这么理解的,其实所有的WebFramework都应该重视并发扬这个技术,就像O/R Mapping那样完善的理论和工具).页面表单数据可以直接跟你指定的任何对象进行绑定,绑定规则和类型转化同Struts1基本一样。通常,Struts2推荐把业务对象放在Action里。间接通过Action来绑定。
   Struts2另外一个亮点是在Action配置和Validator配置更加灵活。Struts能将处理请求定位到Action的某个方法里。如下面的Action定义

  1. <action name="EmployeeAction_*" method="{1}" class="com.EmployeeAction">

如果你提交请求EmployeeActionUpdate,Struts2会自动调用EmployeeAction的Update方法.Struts提供在代码外的验证机制保证了Web应用的可维护性。然而,Struts1的验证机制只提供了对一个对象统一的验证机制。这并没有考虑的业务上的变化,比如。Struts1中可以对Employee的名字,性别,生日,EMail做验证。但实际情况是我们的操作有Add Employee,Update Employee等,这俩种操作就有可能需要不同的验证逻辑。Struts2允许为分别为这俩个操作定义不同的Validator配置文件。如分别定义EmployeeAction_save_validation.xml,以及EmployeeAction_update_validation.xml
   Struts2从结构上来说还有个亮点是使用了Interceptors,即Pipeline(or Filter) Pattern。在Http请求到达Action前以及Action处理后,都会经过很多Interceptor类处理。如Validation Interceptor 用于在调用Action前进行验证。从原来Struts1版本来看,其实现也基本上是按照Pipeline来实现的.但这些是不可配置的。现在可以在Struts.xml或者Ation定义里加上<interceptors>配置,如为整个Web系统加上一个权限验证的 
  1. <interceptors>
  2.   <interceptor name="authentication"
  3.                class="myapp.AuthenticationInterceptor"/>
  4.  </interceptors>

  总的来说,Struts2改动地方很大,强化了Action的中心地位;用了更多的技术和标记库来实现View;弱化了对Model层控制。要理解起来并不容易,但它的所做的改动很多地方更加适合实际系统的开发,非常值得我们去试用的。

  附:看Struts2文档推荐看Tutorials中的Bootstrap 和MailReader Tour俩个例子,MailReader Tour是一个非常好的例子。另外要看的是Guides部分,它详细描述了Struts2的各个部分.你看MailReader Tour不明白的地方都能在Guides中找到答案。这些文档都比较全,但因为Struts2架构和核心代码上都来自于WebWork,所以有些文档或者代码片断会搞成WebWork,需要在看文档的时候多注意一下 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值