处理外部输入的利器——ActionForm

来源:互联网 发布:和平高清网络电视 编辑:程序博客网 时间:2024/06/05 18:12
 

处理外部输入的利器——ActionForm

       ActionForm实质上是一个JavaBean,主要用于在视图层和控制层之间传递HTML表单数据。控制层可以从ActionForm Bean中读取用户输入的表单数据,也可以把来自模型层的数据存放到ActionForm Bean,返回给视图。起到数据桥梁的作用。

Struts程序中,要获得表单数据可以使用ActionForm的子类,自定义的ActionForm需满足以下条件:

1.       继承org.apache.struts.action.ActionForm类;

2.       对HTTP请求的每个HTML输入控件都要定义对应的公共属性;

3.       该页面中提交数据的表单元素的名称必须和子类的成员变量名保持一致;

4.       如果要对传递给控制器的数据进行校验,必须在子类中重写validate()方法;

5.       如果想在填充ActionForm之前对某些属性进行初始化,则必须实现reset()方法;

        ActionForm有request和session两种作用域。如果设定为request,则ActionForm实例将保存在request对象中,像其他保存在request中的属性一样,仅在当前请求范围内有效;如果设定为session,则ActionForm的实例保存在session对象中,此ActionForm实例在整个HTTP会话中有效。

根据作用域的不同,Struts框架把ActionForm的实例保存在request或session对象中,因此可以像取出任何存放在request或session中的属性一样取出ActionForm实例。

 

动态ActionForm

        每个ActionForm都是JavaBean,每个表单生成对应的ActionForm,这样可能造成有许多的ActionForm的情况。Struts1.1改进,引入的动态ActionForm概念。通过Struts框架中的DynaActionForm类及其子类可以实现动态ActionForm,允许通过Struts的配置文件完成ActionForm的全部配置,不必要在应用程序中创建具体的ActionForm类。

        动态ActionForm的具体配置方法:在Struts配置文件的<form-beans>中添加一个<form-bean>元素,type属性设置成DynaActionForm或它的某个子类的全名。下例创建一个动态ActionForm名为loginForm,它包含两个实例变量:username和password:

<form-beans>

   <form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">

      <form-peroperty name="userID" type="java.lang.String"/>

      <form-peroperty name="userPwd" type="java.lang.String"/>

   </form-bean>

</form-beans>

 

 

原创粉丝点击