struts框架——ActionForm+DynaActionForm

ActionForm

Actionform的作用:
表单字段收集器
如果ActionForm中的属性和表单中的参数不一致,则只收集和表单名字相同的属性
作为类型转换器
作为传输对象

语法要求:
必须扩展自org. apache . struts . action . ActionForm
如果要获取表单的值,必须定义相应的私有属性
如果要求在ActionForm传递到Action之前进行校验,必须实现validate方法
如果想要在组装前初始化属性,必须实现reset方法

注意:
不是pojo类,继承了ActionForm,依赖于struts框架
不能作为结果bean,只能收集表单参数
如果要传递到业务层,只能把它放到pojo对象进行传递

DynaActionForm

执行流程:
1、先在struts.xml文件 中添加配置信息(以表单发送用户名密码为例)

form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
			<form-property name="username" type="java.lang.String"/>
			<form-property name="age" type="java.lang.Integer"/>
		</form-bean>

2、启动服务器,加载配置文件web.xml。文件读取到内存,读取< servlet>标签创建出中央控制器ActionServlet
执行init ()方法进行初始化。

3、创建fromBean存放FromBeanConfig对象

4、将主配文件struts-config.xml 读取到内存

5、创建一个ModuleConfigImpl对象[ 实现ModuleConfig接口]

ModuleConfig 管理actionConfigs和formBeans两个Map集合:
◆把每个请求对应的配置信息< action-mappings>封装到ActionMapping,把多个ActionMapping放在actionConfigs Map中
◆把每个请求对应的配置信息< form-beans>封装到FormBeanConfig, 把多个FormBeanConfig放在FormBeanConfig Map中
formBeans: key = “loginForm”, value = FormBeanConfig 对象
FormBeanConfig : string name = “loginForm”, string type = “DynaActionForm”

6、通过name="dynaForm"找到formbean type= org. apache. struts .action.DynaActionForm”创建DynaActi onForm对象

一创建DynaActionForm 对象就通过创建出FormpropertyConf ig对象和fromProperties集合(map)

7、调用processPopulate()方法收集表单数据,将数据收集到dynaValues集合(map) 中
usename
◆通过参数名usename到 DynaActionForm 中找key为username的FromBeanConfig 对象
◆通过FromBeanConfig 对象找到type 为string
◆将表单中参数名和参数值封装到dynaValues下 key三"username", value = "tom”
age
◆通过参数名age到DynaActionForm中找key为age的FromBeanConfig对象
◆通过FromBeanConfig对象找到type为Integer
◆到静态Map集合中找类型转化器,将字符串“21”转换为整型21
◆将表单中参数名和参数值封装到dynaValues下 key="age”, value=21

8、调用processPopulate(request, response, form, mapping), 将表单参数收集到表单bean (收集到DynaActionForm 中的map中)

9、调用processActionCreate(request, response, mapping), 创建action对象

10、执行validation()方法,把DynaActionForm、action、 mapping. request、 response 传过来

从dynaValues集合中获得属性

public objectget(Stringname){
object value = this . dynaValues . get(name);//以dynaValues 集合中取出了key 为age 的value
if(value !=nul1){
return value;
}else{
......
}

11、拿到username与age 后,传到名字为success的forward标签对应的视图组件

${ dynaForm. map. username }

12、通过dynaForm 属性名拿到dynaActionForm对象
13、通过dynaActionForm. getMap()拿到dynaValues map集合
14、调用dynaValues . get(“username”);输出username 属性值

优点: 代码量大大减少
缺点:
表单中的数据传递给业务层较为麻烦。不能用setParameter方法。
所有属性和类型在配置文件中设定,编译的时候不会验证,如果配置错了,产生错误结果较为难找。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值