动态ActionForm使用随笔

原创 2005年05月16日 11:11:00
接触Struts久了不免会对其有这样或那样的看法,前阶段潜心研究Struts,对其中的动态ActionForm的使用就有一些意见,在这里跟大家说道说道,希望大家能够给点意见。
一、用途
动态ActionForm与标准的Form的用途如出一辙,都是为了能够作为DTO(Data Transfer Object)对向来与Action做数据传递,所不同的是动态ActionForm并没有一个专门的类作为DTO对象的载体,取而代之的是在Struts配置文件FormBean中增加属性配置项,来达到与DTO对象相同的作用。下面我们以用户登陆的应用为例,讨论一下普通的ActionForm与动态ActionForm的区别。
用户通过输入用户名和密码后经过校验进入系统。过程描述的很简单,ActionForm设计起来也不复杂,我们只需要设定一下两个属性就可以了:
private String userID;
private String userPwd;
最后我们为着两个属性加上getset方法就完成了普通ActionForm的设计。如果需要的话,我们还可以在这个Formli覆盖validate()方法来对用户输入的信息进行简单的校验。
下面,我们就来看看动态ActionForm是通过怎样的设计来达到和上面同样的效果的吧!
我们在struts-config文件中的<form-bean>标签中定义我们的动态Form,代码如下。
<form-beans>
  <form-bean  name=”loginForm  type=”org.apache.struts.action.DynaActionForm”>
  <!----下面是设置Form的属性--- >
      <form-poperty  name=”userID  type=”java.lang.String”/>
      <form-poperty  name=”userPwdtype=”java.lang.String”/>
  </form-bean>
</form-beans>
这样便完成了一个动态ActionForm的定义,我们不需要定义getset方法来设置或者获得Form属性的值,我们只需要在我们的Action中使用:
String userID=(String)form.get(“userID”);
这样的方法获得Form中的数据,或者是通过
form.set(“userID”,”001318”);
这样的方法设置Form中的属性值。
从上面的论述不难看出两种ActionForm的用途与使用差别不是很大,都可以完成对视图的数据传递的作用。而从便捷角度来看动态FormBean显得优势明显,因为他的设计更为简单,而且由于具有可配置的优势,使其在实际操作方面显得跟为灵活!
二、差异
上面的论述能够突出动态ActionForm的优势,下面我们来看看动态ActionForm的“致命伤”。
1、  数据验证
细心的读者会发现我在提及普通的ActionForm的时候我曾经讲到过可以在ActionForm中的validate()方法对用户输入的信息进行简单的校验,而在动态ActionForm中却从未提到。这是因为如果想要实现动态ActionForm的校验我们必须做很多工作。首先我们必须引入Validator验证框架来帮助我们完成数据校验工作,其次由于某些数据的校验,我们还有可能为其编写数据校验项来帮助Validator框架完成数据校验工作。这与普通的ActionForm相比,动态ActionForm显得繁琐而笨拙。
2、  可配置
动态ActionForm的可配置型无疑是其存在优势之一,,但笔者发现,其可配置性的作用可谓捉襟见肘。因为可配置的FormBeanAction的耦合度还是相当大的。也就是说,由于Action类李引用了如“String userID=(String)form.get(“userID”);”这样的代码,那么当我们增加或删除Form中的属性的时候就必须更改我们的Action类,这与普通的ActionForm的作法是一样的,失去了其可配置的优势所在。
综上,笔者推荐使用普通的ActionForm去履行DTO的职责,因为那样会更方便解决应用问题。动态ActionForm只是一点小尝试,不推荐使用。以上官邸均属个人看法,不妥之处还望各位能够批评指正!

动态ActionForm使用随笔

接触Struts久了不免会对其有这样或那样的看法,前阶段潜心研究Struts,对其中的动态ActionForm的使用就有一些意见,在这里跟大家说道说道,希望大家能够给点意见。一、用途动态ActionF...
  • esteem
  • esteem
  • 2007年02月02日 21:15
  • 464

使用动态ActionForm-DynaActionForm(原理)

在Struts框架中,ActionForm对象用来包装HTML表单数据,并能动态返回用于显示给用户的数据,自定义的ActionForm必需符合JavaBean规范,并继承Struts的ActionFo...
  • wucuilan827
  • wucuilan827
  • 2007年04月16日 15:50
  • 1638

SSH:Struts1框架(动态ActionForm)

使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。  首先,如果ActionFo...
  • qq_27550755
  • qq_27550755
  • 2015年11月19日 15:48
  • 666

Struts中静态动态ActionForm的使用(一)

目录 登录例子 区别 时间属性 验证机制         在Struts1中,我们经常接触ActionForm为静态ActionForm。静态是指开发者在使用struts框架时...
  • llhhyy1989
  • llhhyy1989
  • 2013年02月18日 11:31
  • 2752

Struts旅程(三)Struts表单处理器ActionForm(静态动态)

上篇我们以登录为例讲解了struts配置,实现了使用struts框架进行登录的示例。一些名词已经在脑海中飘荡了。 ActionServlet:struts的控制器,负责截取URL或分发。提供Model...
  • lovesummerforever
  • lovesummerforever
  • 2014年02月10日 08:00
  • 11943

struts1.x中ActionForm的作用

一:通常是用来取网页中html标签的值,概念性的东西就不说了。通常就是ActionForm中设置变量属性和相应得getset方法。之后再action中调用actionFrom得到页面的值。我们只需写好...
  • wangzihu
  • wangzihu
  • 2012年05月06日 16:11
  • 6664

strust中Action类和ActionForm类的基本用法

这里用一个最简单的登录页面演示,一个LoginForm,一个LoginAction。   LoginForm如下: ----------------------------------------...
  • xzf19901108
  • xzf19901108
  • 2012年07月03日 10:48
  • 1697

使用动态ActionForm

在Struts框架中,ActionForm对象用来包装HTML表单数据,并能动态返回用于显示给用户的数据,自定义的ActionForm必需符合JavaBean规范,并继承Struts的ActionFo...
  • gard_liu
  • gard_liu
  • 2008年05月29日 22:19
  • 412

Struts2 使用动态ActionForm

Struts验证框架 Validatororo.jarcommons-validation.jarvalidator-rules.xmlvalidation.xmlTitles框架...
  • bingdongguke
  • bingdongguke
  • 2011年05月29日 21:37
  • 433

动态ActionForm的使用

 使用ActionForm可以给开发者在处理HTML表单时带来极大的帮助,它简化了代码的编写,并提供了自动的数据验证。但是,ActionForm也存在几个非常明显的缺点。 首先,如果ActionFor...
  • furthersun
  • furthersun
  • 2007年11月30日 19:28
  • 497
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态ActionForm使用随笔
举报原因:
原因补充:

(最多只允许输入30个字)