动态ActionForm使用随笔

接触Struts久了不免会对其有这样或那样的看法,前阶段潜心研究Struts,对其中的动态ActionForm的使用就有一些意见,在这里跟大家说道说道,希望大家能够给点意见。
一、用途
动态ActionForm与标准的Form的用途如出一辙,都是为了能够作为DTO(Data Transfer Object)对向来与Action做数据传递,所不同的是动态ActionForm并没有一个专门的类作为DTO对象的载体,取而代之的是在Struts配置文件FormBean中增加属性配置项,来达到与DTO对象相同的作用。下面我们以用户登陆的应用为例,讨论一下普通的ActionForm与动态ActionForm的区别。
用户通过输入用户名和密码后经过校验进入系统。过程描述的很简单,ActionForm设计起来也不复杂,我们只需要设定一下两个属性就可以了:
private String userID;
private String userPwd;
最后我们为着两个属性加上get和set方法就完成了普通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的定义,我们不需要定义get和set方法来设置或者获得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的可配置型无疑是其存在优势之一,,但笔者发现,其可配置性的作用可谓捉襟见肘。因为可配置的FormBean与Action的耦合度还是相当大的。也就是说,由于Action类李引用了如“String userID=(String)form.get(“userID”);”这样的代码,那么当我们增加或删除Form中的属性的时候就必须更改我们的Action类,这与普通的ActionForm的作法是一样的,失去了其可配置的优势所在。
综上,笔者推荐使用普通的ActionForm去履行DTO的职责,因为那样会更方便解决应用问题。动态ActionForm只是一点小尝试,不推荐使用。以上官邸均属个人看法,不妥之处还望各位能够批评指正!


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值