1.动态ActionForm的作用
动态ActionForm可以减少静态ActionForm的数量,而且使用动态ActionForm可以完全获取静态ActionForm的所有功能。
2.配置structs-config.xml文件
<struts-config>
<form-beans>
<form-bean name="dynaActionForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="age" type="java.lang.Integer"></form-property>
</form-bean>
</form-beans>
<action-mappings>
<action path="/dynAction"
type="com.cx.struts.DynaAction"
name="dynaActionForm"
scope="request">
<forward name="success" path="/dynamic.jsp"></forward>
</action>
</action-mappings>
</struts-config>
3.实现的Action类
public class DynaAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DynaActionForm daf=(DynaActionForm)form;
String username=(String)daf.get("username");
Integer age=(Integer)daf.get("age");
System.out.println("username==="+username);
System.out.println("age====="+age);
System.out.println("QQ:895861200");
return mapping.findForward("success");
}
}
4.JSP页面
<form action="dynAction.do" method="post">
用户名:
<input type="text" name="username" />
<br />
年 龄:
<input type="text" name="age" />
<br />
<input type="submit" value="提交" />
</form>
5.JSP页面成功页面
<body>
This is my JSP page. <br>
用户名:${dynaActionForm.map.username}<br/>
年 龄:${dynaActionForm.map.age}<br/>
</body>
6.原理解释
动态ActionForm其实是把页面中的HTML元素的名字和值放到了map中,所以通过get方法可以取出相应的值,动态ActionForm采用EL表达式的输出方式,由上面可以看出。