guokehua(@yahoo.com.cn oy Java 1010 08高级 Action form 2008-3-10 郭克华EE框架实战教学视频
2008-3-10 1 oy Java! J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 08高级ActionForm ActionForm
ActionForn高级应用1:guokehua@yahoo.com.cn Action Form的 Scope Action input=/reg. jsp name="regForm" I path="reg" scope="request" type=bank action. RegAction"/> 1010 现在我们来考虑 scope的意思 首先在 Actionform内增加一个构造函数,在 reset 函数内和构造函数内增加一个标记,修改 scope,我 们来看一下结果 结论: scope= request:每次提交都会新生成一个 1生成一个t10nB对象,保存在se910m丙,以 后就不生成了,在 session中取得 在 scope= session时,一定要注意 reset的用法 008-3-10 郭克华JEE框架实战教学视频
2008-3-10 2 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 ActionForm ActionForm高级应用1: ActionForm ActionForm的scope • 现在我们来考虑 现在我们来考虑scope的意思 • 首先在ActionForm ActionForm内增加一个构造函数,在 内增加一个构造函数,在reset 函数内和构造函数内增加一个标记,修改 函数内和构造函数内增加一个标记,修改scope,我 们来看一下结果 们来看一下结果 • 结论:scope=request: scope=request:每次提交都会新生成一个 每次提交都会新生成一个 ActionForm ActionForm对象;scope=session: scope=session:在一次会话中, 在一次会话中, 生成一个ActionForm ActionForm对象,保存在session session内,以 后就不生成了,在 后就不生成了,在session session中取得 • 在scope=session scope=session时,一定要注意 时,一定要注意reset的用法
guokehua(@yahoo.com.cn ActionFor高级应用2 表单跨页 有两个表单,第一个表单输入账号密码提 交,到下一个表单输入住址电话要求将 这些内容在一个 ActionForm里面保存。 1建立 ActionForm生成p1:P2 p2:配置一个 forwardAction,指向 Action Forn跳转到p2让p1提交给它 3配置另一个 Action指向同一个 Action。rm让p2提交给它 4注意:sc。pe应该等于 sessn 008-3-10 郭克华JEE框架实战教学视频
2008-3-10 3 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 ActionForm ActionForm高级应用2:表单跨页 • 有两个表单,第一个表单输入账号密码 第一个表单输入账号密码,提 交,到下一个表单输入住址 到下一个表单输入住址,电话,要求将 这些内容在一个ActionForm ActionForm里面保存。 • 1:建立ActionForm ActionForm,生成p1,p2 • 2:配置一个forwardAction forwardAction,指向 ActionForm ActionForm,跳转到p2,让p1提交给它 • 3:配置另一个Action,, Action,,指向同一个 ActionForm ActionForm,让p2提交给它 • 4:注意:scope应该等于session session
guokehua(@yahoo.com.cn ActionForn高级应用3: 利用索引属性的 ActionForn 在某些页面上要输入许多相同类型的信 息,如一个人的三个电话号码,你采用 什么办法? 方法1:定义属性 0 phone1 phone2hone3,缺陷是 actionforn内属性个数太多 1·方法2:都叫做 phone在 ActionForm 定义数组属性内。这种方法一般被采用 方法3:索引属性 008-3-10 郭克华J2E框架实战教学视频
2008-3-10 4 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 ActionForm ActionForm高级应用3: 利用索引属性的 利用索引属性的ActionForm ActionForm • 在某些页面上要输入许多相同类型的信 在某些页面上要输入许多相同类型的信 息,如一个人的三个电话号码,你采用 息,如一个人的三个电话号码,你采用 什么办法? • 方法1:定义属性 phone1,phone2,phone3, phone1,phone2,phone3,缺陷是 actionform actionform内属性个数太多 内属性个数太多 • 方法2:都叫做phone,在ActionForm ActionForm 定义数组属性内。这种方法一般被采用 定义数组属性内。这种方法一般被采用 • 方法3:索引属性
guokehua(@yahoo.com.cn ActionForn高级应用3: 利用索引属性的 ActionForn 第一步:表单上表单元素的 property叫做: 属性名,从0开始 1010 ·第二步:在 ActionForm中定义一个数组存储 Q这些属性,增加se和get函数 private string[] phones new String [3]i public string getPhone (int i)i return phones [i]i public void setPhone(int i, string phone)i this phones [i]= phone 008-3-10 郭克华JEE框架实战教学视频
2008-3-10 5 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 ActionForm ActionForm高级应用3: 利用索引属性的 利用索引属性的ActionForm ActionForm • 第一步:表单上表单元素的 第一步:表单上表单元素的property property叫做: 属性名[i],i从0开始 • 第二步:在ActionForm ActionForm中定义一个数组存储 中定义一个数组存储 这些属性,增加 这些属性,增加set和get函数 private private String[] String[] phones = new String[3]; String[3]; public String getPhone getPhone(int i){ return phones[i]; } public void setPhone setPhone(int i,String phone){ i,String phone){ this.phones[i] = phone; [i] = phone; }
guokehua(@yahoo.com.cn ActionForn高级应用3: 利用索引属性的 ActionForn 前面一种方法,需要事先知道数组大小,可以 用 Array List取代 在 Action Form中定义一个Lst存储这些属性, 增加set和get函数 private Arraylist phones new Arraylist ()i F9 public string getPhone(int i)( if(phones. size()>i) return (string)phones. get(i)i return null public void setPhone(int i, String phone)i this phones. add (phone)i 但是这种方法的坏处是:失去了顺序,一定要慎用!!!!! 008-3-10 郭克华J2EE框架实战教学视频
2008-3-10 6 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 ActionForm ActionForm高级应用3: 利用索引属性的 利用索引属性的ActionForm ActionForm • 前面一种方法,需要事先知道数组大小,可以 前面一种方法,需要事先知道数组大小,可以 用ArrayList ArrayList取代 • 在ActionForm ActionForm中定义一个List存储这些属性, 存储这些属性, 增加set和get函数 private private ArrayList ArrayList phones = new ArrayList ArrayList(); public String getPhone getPhone(int i){ if(phones.size()>i) .size()>i) return (String) (String)phones.get(i); .get(i); return null; } public void setPhone setPhone(int i,String phone){ i,String phone){ this.phones.add(phone); .add(phone); } 但是这种方法的坏处是:失去了顺序,一定要慎用!!!!!!
ActionForm高级应用4:guokehuae@Dyahoo.com.cn 丁动态 Action Form 过多的 ActionForm会让系统庞大,怎 样解决? 1010 (1)建立动态 Action Form (2)用 DynaAction Form get方法使用 动态 ActionForn 008-3-10 郭克华JEE框架实战教学视频
2008-3-10 7 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 ActionForm ActionForm高级应用4: 动态ActionForm ActionForm • 过多的ActionForm ActionForm会让系统庞大,怎 会让系统庞大,怎 样解决? • (1)建立动态ActionForm ActionForm • (2)用DynaActionForm DynaActionForm.get方法使用 动态ActionForm ActionForm
guokehua(@yahoo.com.cn 但是这样带来一个缺陷:验证功能失去了 前端验证两种方案1: ActionForm验证2: Validate框架验证 d· Validate框架可以解决这个问题 Validate框架的要点:将验证的工作写在 XML文件中 ·这有一个好处,比如很多表单都要验证输入不 能为空,传统方法需要在每个 ActionForm中 写瞪语句,相当于同样的语句分散在项目的很 多地方,现在有了这个XML文件,只需要写 次就好了 008-3-10 郭克华JEE框架实战教学视频
2008-3-10 8 J guokehua@yahoo.com.cn 郭克华J2EE框架实战教学视频 但是这样带来一个缺陷 但是这样带来一个缺陷:验证功能失去了 验证功能失去了 • 前端验证两种方案 前端验证两种方案:1:ActionForm ActionForm验证2: Validate Validate框架验证 • Validate Validate框架可以解决这个问题 框架可以解决这个问题 • Validate Validate框架的要点:将验证的工作写在 将验证的工作写在 XML文件中 • 这有一个好处,比如很多表单都要验证输入不 这有一个好处,比如很多表单都要验证输入不 能为空,传统方法需要在每个 能为空,传统方法需要在每个ActionForm ActionForm中 写if语句,相当于同样的语句分散在项目的很 语句,相当于同样的语句分散在项目的很 多地方,现在有了这个 多地方,现在有了这个XML文件,只需要写 文件,只需要写 一次就好了