? FormBean 的意义
? 定义FormBean
? 声明FormBean
?从FormBean中获得请求参数
? 输出FormBean数据到页面
? 动态FormBean
----------------------------START--------------------------------
? FormBean 的意义
–“数据邮递员”

? 可以从页面到Action,或从Action到页面来传递数据
–获得请求参数
? 代替了request.getParameter(“”)方法
–提供了集中的验证方法
? validate();
–自动装载重新显示数据
? 在验证中很有意义
? 定义FormBean
–定义一个Form Bean 继承ActionForm
–针对JSP页面中Form 表单的属性创建getter()、setter() 方法
例如:
public class LoginForm extends ActionForm{
public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
return super.validate(arg0, arg1);
}
private String username="redking";
private String password;
getter()……
setter()……
? 声明FormBean
– 声明


– name:formBean 的名称
– type:formBean 的类全名
–和Action 关联在一起
type="com.amaker.struts.action.LoginAction"
name="loginForm"
input="/pages/login.jsp"
>
–在Action的execute方法中使用
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
// 强制类型转换
LoginForm loginForm = (LoginForm)form;
// 获得属性
String userName = loginForm.getUserName();
return null;
}
?从FormBean中获得请求参数
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
Exception {
// 强制类型转换
LoginForm loginForm = (LoginForm)form;
// 获得属性
String userName = loginForm.getUserName();
return null;
}
---------------------------传统方式获取表单数据------------------------
LoginAction.java
开源框架Struts:FormBean滴那些事儿_第1张图片
web.xml
开源框架Struts:FormBean滴那些事儿_第2张图片
struts-config.xml
开源框架Struts:FormBean滴那些事儿_第3张图片
login.jsp
开源框架Struts:FormBean滴那些事儿_第4张图片
测试:
开源框架Struts:FormBean滴那些事儿_第5张图片
开源框架Struts:FormBean滴那些事儿_第6张图片
开源框架Struts:FormBean滴那些事儿_第7张图片
-------------------------使用FormBean获取表单数据----------------------
LoginForm.java
开源框架Struts:FormBean滴那些事儿_第8张图片
struts-config.xml
开源框架Struts:FormBean滴那些事儿_第9张图片
LoginAction.java
开源框架Struts:FormBean滴那些事儿_第10张图片
测试:
开源框架Struts:FormBean滴那些事儿_第11张图片
开源框架Struts:FormBean滴那些事儿_第12张图片
开源框架Struts:FormBean滴那些事儿_第13张图片
-------------------------测试Scopes范围-----------------------------------
开源框架Struts:FormBean滴那些事儿_第14张图片
没加scope参数默认为Session范围
下面测试一下
TestFormBeanScope.jsp
开源框架Struts:FormBean滴那些事儿_第15张图片
测试:
login.jsp页面
开源框架Struts:FormBean滴那些事儿_第16张图片
TestFormBeanScope.jsp页面
开源框架Struts:FormBean滴那些事儿_第17张图片
从而验证了FormBean的Scope范围在Session范围内。
下面显式指定Scope范围
开源框架Struts:FormBean滴那些事儿_第18张图片
指定scope范围为request
开源框架Struts:FormBean滴那些事儿_第19张图片
请求完毕后就完事了现在没有值了哈~
开源框架Struts:FormBean滴那些事儿_第20张图片
那有没方法来实现呢?我们来让其跳转哈~
先来看下以前是怎么处理跳转滴~
开源框架Struts:FormBean滴那些事儿_第21张图片
测试:
开源框架Struts:FormBean滴那些事儿_第22张图片
request请求还没结束,现在username打印出来了哈~
开源框架Struts:FormBean滴那些事儿_第23张图片
下面看下struts是怎么配置哈~
struts-config.xml
开源框架Struts:FormBean滴那些事儿_第24张图片
LoginAction.java
开源框架Struts:FormBean滴那些事儿_第25张图片
测试:
开源框架Struts:FormBean滴那些事儿_第26张图片
实现跳转
开源框架Struts:FormBean滴那些事儿_第27张图片
------------------------NEXT------------------------------------
? 输出FormBean数据到页面
–使用Struts 标签
?
–name: form Bean 的名称(在struts-config.xml文件中声明的)
–property: form Bean 的属性
–使用表达式语言(EL)
? ${loginForm.userName}
要想使用struts中的标签我们要导入TLD文件哈~
struts-1.3.8.rar\struts-1.3.8\src\taglib\src\main\resources\META-INF\tld
开源框架Struts:FormBean滴那些事儿_第28张图片
将这些标签库描述符导入到工程的lib目录下
开源框架Struts:FormBean滴那些事儿_第29张图片
测试:
开源框架Struts:FormBean滴那些事儿_第30张图片
效果还是一样滴~
开源框架Struts:FormBean滴那些事儿_第31张图片
------------------------------NEXT-------------------------------------
? 动态FormBean
–意义

? 使用动态Bean的意义上减少Bean的个数
–动态FormBean类
? org.apache.struts.action.DynaActionForm
–配置





–取值
DynaActionForm loginForm = (DynaActionForm)f;
String username = (String) loginForm.get("username");
String password = (String) loginForm.get("password");
 
LoginAction.java
开源框架Struts:FormBean滴那些事儿_第32张图片 struts-config.xml
开源框架Struts:FormBean滴那些事儿_第33张图片
测试:
看下动态FORMBEAN的效果
开源框架Struts:FormBean滴那些事儿_第34张图片 
效果一样哈~
开源框架Struts:FormBean滴那些事儿_第35张图片
-------------------------------END----------------------------------