Struts——ActionForm
来源:互联网 发布:qq黑客盗号软件 编辑:程序博客网 时间:2024/05/07 10:40
ActionForm
ActionForm 表示 HTTP窗体中的数据,可以将其看作是模型和视图的中介,它负责保存视图中的数据供模型或者视图使用。ActionForm还具有的过滤保护的作用,只有通过ActionForm 验证的数据才能够发送到 Action 处理。
ActionForm Bean从应用和配置的角度分为两类:动态ActionForm和静态ActionForm和LazyForm。作用一样,只是实现不一样。
一.静态Form
由程序员手工编写Form
1.ActionForm
提交表单的字段名和form中的属性名一致。
2.ValidatorForm
用于验证框架的Form,在请求参数前,先使用验证框架验证。
在struts-config中对应的action标签的validate值为true。
3.ValidatorActionForm
二.动态ActionForm
通过配置文件完成ActionForm配置
1.DynaActionForm
<form-beanname="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>
Java代码
public ActionForwardexecute(ActionMapping mapping, ActionForm form,HttpServletRequestrequest, HttpServletResponse response)throwsException { DynaActionFormdaf=(DynaActionForm)form;Stringusername=(String)daf.get("username"); Integerage=(Integer)daf.get("age"); System.out.println("UserName="+username); System.out.println("Age="+age); returnmapping.findForward("success");}
2.DynaValidatorForm
和ValidatorForm一样在使用验证框架时使用。配置和DynaActionForm类似。
type="org.apache.struts.validator.DynaValidatorForm"
3.DynaValidatorActionForm
ValidatorActionForm和DynaValidatorActionForm也都是在使用验证框架时使用,和DynaValidatorForm及ValidatorForm不同的是,在配置validtion.xml中<formname=path> name使用的是action的path属性值。以此来区分不同请求的验证规则。
三.还有一种特殊的Form:LazyValidatorForm。
<form-beanname="loginForm"type="org.apache.struts.validator.LazyValidatorForm"></form-bean>
我们没有配置form的属性。所以在jsp页面中必须使用struts标签。
Jsp代码
<br>基本使用方式<br>Customer Name:<html:text property="username"></html:text> <br>Customer Code:<html:text property="usercode"></html:text> <br> <br>自动封装Map<br>国家:<html:text property="address(nation)"></html:text> <br>省份:<html:text property="address(state)"></html:text> <br>城市:<html:text property="address(city)"></html:text>
这样就可以直接进行验证框架和action中的取值。
Java代码
public ActionForwardexecute(ActionMapping mapping, ActionForm form,HttpServletRequestrequest, HttpServletResponse response)throwsException {LazyValidatorFormlz = (LazyValidatorForm) form;Stringusername = (String) lz.get("username");Stringusercode = (String) lz.get("usercode");System.out.println("name---" + username + " usercode---" + usercode);Map m =(Map) lz.get("address");System.out.println(m.get("nation"));System.out.println(m.get("state"));System.out.println(m.get("city"));returnnull;}
四、ActionForm赋值原理
我们如果知道了Struts的流程,那么理解起ActionForm的赋值过程来就简单了很多,大家都知道,点击提交后,会先初始化ActionServlet类,当接收到请求时,会调用service对象检查HTTP请求类型,通过doGet()或doPost()方法调用process()方法。在ActionServlet中会调用RequestProcessor的process()方法进行处理,该方法负责创建ActionForm对象,创建成功之后,首先执行ActionForm中的reset()方法进行重置,然后得到表单中所有输入域的name名称,再调用request.getParameterValues(),根据name名称得到相应的值,最后将表单中的数据全部放到map中,map的key为表单输入域的名称,map的value为表单输入域的值,接下来调用一个第三方组件BeanUtils,将Map中的值,根据ActionForm中的类型先转换好,再调用ActionForm中的setter方法设置到ActionForm上。
reset()方法:
赋值流程:
简单顺序:先调用构造方法(判断是否存在)——reset(重置)——setter(设定值)
五、总结
ActionForm是在Struts1中存在的一个常用类,ActionForm帮助我们实现了自动设置数据,使得程序员的使用变得简单,不用关心赋值之类的事情而专注于业务。Struts2出现后,不用人们手动写ActionForm了,但是这种思想我们需要了解。
- Struts——ActionForm
- 【Struts】——ActionForm
- Struts功能详解——ActionForm
- Struts功能详解——ActionForm
- Struts功能详解——ActionForm
- SSH-Struts(三)—ActionForm
- 一口一口吃掉Struts(六)——动态ActionForm
- 一口一口吃掉Struts(六)——动态ActionForm .
- struts静态动态ActionForm使用(二)—验证
- Struts ActionForm
- 【Struts】ActionForm
- struts-ActionForm
- struts-ActionForm:reset()详解
- 使用Struts之ActionForm
- 使用Struts之ActionForm
- Struts应用之ActionForm
- struts-ActionForm:reset()详解
- (Struts)动态ActionForm(转)
- <ASP.NET4 从入门到精通>学习笔记3
- Java中,利用反射机制修改定义出来的String对象本身。
- 《Programming in Lua 3》读书笔记(七)
- 《ASP.NET4 从入门到精通》学习笔记4
- Problem 1049 - 斐波那契数
- Struts——ActionForm
- 关于PHP中数组的增删改 统计问题
- ip多播
- 左:取左边的文本,后面加数字时控制微我向左多少像素 20140710
- maven配置和工程的创建
- Java 多线程 Executor 线程池 从线程返回结果 Java编程思想读书笔记
- TVS和一般的稳压二极管有什么区别
- MongoDB MapReduce速度提升20倍的优化宝典
- 小菜鸟!加油!