空间站

北极心空

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
				接触
				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
				=”
				userPwd
				
				type
				=”
				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
				只是一点小尝试,不推荐使用。以上官邸均属个人看法,不妥之处还望各位能够批评指正!
		


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=375179

posted on 2006-12-25 14:36 芦苇 阅读(519) 评论(0)  编辑  收藏 所属分类: Struts

只有注册用户登录后才能发表评论。


网站导航: