JAVA开发自学教材11Struts 1应用_第1页
JAVA开发自学教材11Struts 1应用_第2页
JAVA开发自学教材11Struts 1应用_第3页
JAVA开发自学教材11Struts 1应用_第4页
JAVA开发自学教材11Struts 1应用_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十一章第十一章Struts 1应用应用回顾与作业点评回顾与作业点评n 如果使用如果使用Struts开发登录功能?开发登录功能?n 使用使用Struts 1开发程序的步骤和要点是什么?开发程序的步骤和要点是什么?n Action组件组件的作用是什么?的作用是什么?n ActionForm组件组件的作用是什么?的作用是什么?本章任务本章任务n 使用使用Struts框架实现:框架实现:n实现简单计算器,使之支持加、减、乘、除四种操作n升级“房屋出租系统”n处理用户登录的出错信息n使用动态Form简化“发布出租信息”的实现本章目标本章目标n 掌握掌握DispatchActionn 掌握在掌握在Str

2、uts中使用资源文件实现国际化中使用资源文件实现国际化n 学会使用学会使用Struts显示出错信息显示出错信息n 掌握掌握DynaActionForm的使用的使用n 学会使用实体对象作为学会使用实体对象作为Form属性的开发技巧属性的开发技巧为什么使用为什么使用DispatchActionn 实现简单的支持加、减、乘、除的计算器,怎实现简单的支持加、减、乘、除的计算器,怎么做?么做?方案方案1:创建创建4个个Action,在页面中,通,在页面中,通过过JavaScript控制提交到不同的控制提交到不同的Action Bean。方案方案2:增加隐藏表单域,表示操作类型增加隐藏表单域,表示操作类型

3、 ,在在Action Bean中根据不同操作中根据不同操作类型做不同处理。类型做不同处理。为什么使用为什么使用DispatchActionn 两个方案:两个方案:n 方案1对每个操作都创建一个Action,系统规模变大时,容易混乱n 方案2将相关操作组织在一个Action中,通过operate参数区分不同操作,但容易使Action中execute方法的代码过长,不易维护n 类似需求在企业应用系统中非常常见类似需求在企业应用系统中非常常见怎样更简洁有效地实怎样更简洁有效地实现这样的需求?现这样的需求?Struts提供了提供了DispatchAction解决此类问题解决此类问题Dispatch的运

4、行原理的运行原理n DispatchAction的魔力的魔力DispatchAction能够根据能够根据传入参数值自动选择传入参数值自动选择Action中同名的方法执行中同名的方法执行演示演示DispatchAction的使用的使用n 使用使用DispatchAction实现计算机器的步骤:实现计算机器的步骤:n创建CalcAction,继承自DispatchActionn在CalcAction中创建加、减、乘、除四个方法n在struts-config.xml中配置CalcActionn编写页面代码演示示例:演示示例: DispatchAction实现计算机器实现计算机器怎样使用怎样使用Dis

5、patchAction 2-1n 使用使用DispatchAction实现计算器实现计算器n创建CalcAction,父类为DispatchAction,无需execute方法n创建加、减、乘、除四个方法public class CalcAction extends DispatchAction public class CalcAction extends DispatchAction public ActionForward doAdd(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServle

6、tResponse response) public ActionForward doSubtract( .) public ActionForward doMultiply ( .) public ActionForward doDivide( .) 怎样使用怎样使用DispatchAction 2-2n配置CalcActionn页面代码 加加减减 . function doSubmit(opr) document.forms0.elementsoperate.value=opr; document.forms0.submit(); 注意:注意:配置配置Dispatch参数名参数名实用的页面

7、编码技巧,实用的页面编码技巧,需要熟练掌握需要熟练掌握练习练习实现计算器实现计算器n 需求说明:需求说明:n使用DispathchAction实现简单的仅支持加减乘除4种操作的计算器完成时间:完成时间:20分钟分钟共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解显示友好的报错信息显示友好的报错信息3-1n 在计算器程序中,第一个数输入在计算器程序中,第一个数输入“text”,第二个,第二个数输入数输入“0”,点击,点击“除除”n 怎样显示友好的报错信息?怎样显示友好的报错信息?Struts提供了报错机制,用

8、于提供友好的报错信息给用户提供了报错机制,用于提供友好的报错信息给用户显示友好的报错信息显示友好的报错信息3-2编辑属性文件编辑属性文件修改对应修改对应Action方法方法在页面上显示报错在页面上显示报错native2ascii encoding gbk ApplicationResource_zh_CN.properties使用使用Struts html:errors标签显示错误。需先引入:标签显示错误。需先引入:演示示例:友好报错信息演示示例:友好报错信息显示友好的报错信息显示友好的报错信息3-3n 也可以这样:也可以这样: ActionMessages errors = new Acti

9、onMessages(); if(!this.isDouble(myForm.getNum1() errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(error.validate.inputnumber); if (!this.isDouble(myForm.getNum2() errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(error.validate.number); Action中中页面页面添加到全局错误信息中,添加到全局错误信息中,作用域是作用域是

10、requestrequest可以在同一名称中可以在同一名称中添加多个错误信息添加多个错误信息不指定不指定property属性,属性,则显示全局错误信息则显示全局错误信息errors.header = errors.footer = errors.header = alert(errors.footer = );属性文件属性文件通过在属性文件中定义通过在属性文件中定义errors.header和和errors.footer属属性设定错误信息格式性设定错误信息格式指导指导显示友好的报错信息显示友好的报错信息n 训练要点:训练要点:n编辑属性文件nStruts标签使用 n 需求说明:需求说明:n修改

11、计算器程序,程序能够提示除数不为0n 实现思路:实现思路:n编辑属性文件n修改对应Action代码n页面上显示报错信息完成时间:完成时间:20分钟分钟讲解需求说明讲解需求说明共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解使用动态使用动态Form简化开发简化开发n 使用使用Struts框架开发时,对每一个页面提交的框架开发时,对每一个页面提交的属性都要建立一个属性都要建立一个ActionForm属性属性n 回顾计算器的回顾计算器的ActionForm属性属性n只有两个属性n如果处理复杂的业务时,属性可能会非

12、常的多n容易漏改出错n大量的“纯体力”代码充斥其中有哪些办法可以解决这种问题呢?有哪些办法可以解决这种问题呢?使用动态使用动态Form简化开发简化开发n 使用动态使用动态Form实现计算器实现计算器 以配置的方式创建以配置的方式创建Form 和使用普通和使用普通Form一样一样 DynaActionForm dynaForm = (DynaActionForm) form; double model = biz.add(Double)dynaForm.get(num1), (Double)dynaForm.get(num2); Action代码代码从动态从动态Form中取值中取值演示示例:动态

13、演示示例:动态Form简化开发简化开发练习练习实现用户注册功能实现用户注册功能n 需求说明需求说明n使用动态ActionForm实现用户注册功能n用户注册时需填写用户名、密码、姓名、生日、地址、电话、自我介绍完成时间:完成时间:25分钟分钟共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解使用实体对象作为使用实体对象作为Form属性属性n 使用动态使用动态ActionForm的好处的好处n省去了编写ActionForm类n页面提交数据变化时只须修改struts-config.xml中的配置n 使用动态使用动态

14、ActionForm的缺陷的缺陷nAction中的代码并没有因此变得简单n业务逻辑变化、数据库增减字段时,需要修改的地方包括实体类、动态ActionForm定义和Action 中相应代码n容易漏掉某处而引入错误使用实体对象作为使用实体对象作为Form属性属性我们已经知道:我们已经知道:页面提交的表单数据,可以自动填充到页面提交的表单数据,可以自动填充到ActionForm中中假如,假如,ActionForm的代码是这样的:的代码是这样的:public class UserForm extends ActionForm private USER user = new USER(); / gett

15、er and setter假如,页面代码是这样的:假如,页面代码是这样的:表单域的值是否表单域的值是否能够自动填充到能够自动填充到Form中呢?中呢?使用实体对象作为使用实体对象作为Form属性属性public class UserForm extends ActionForm private USER user = new USER(); / getter and setterActionForm代码代码 . action name=userForm . struts-config.xmlUserForm myForm = (UserForm)form;/ 执行登录执行登录USER userWithUid = userBiz.login( myForm.getUser() );Action代码代码避免了避免了“纯体力纯体力”型编码型编码数据库字段增减时,无需修改数据库字段增减时,无需修改Form和和Action代码代码共性问题集中讲解共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论