到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comwww.javaresearch.org无关,不对该信息负责.通过http://www.javaresearch.org/article/63484.htm访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
Struts 2
作者:javamonkey 来源:www.javaresearch.org  发布时间:2007-03-12 00:28:49.217


    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,需要在看文档的时候多注意一下 


[:E]

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读