张孝祥struts高级实战进阶资料

上传人:f****u 文档编号:113675024 上传时间:2019-11-09 格式:PPT 页数:39 大小:399KB
返回 下载 相关 举报
张孝祥struts高级实战进阶资料_第1页
第1页 / 共39页
张孝祥struts高级实战进阶资料_第2页
第2页 / 共39页
张孝祥struts高级实战进阶资料_第3页
第3页 / 共39页
张孝祥struts高级实战进阶资料_第4页
第4页 / 共39页
张孝祥struts高级实战进阶资料_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《张孝祥struts高级实战进阶资料》由会员分享,可在线阅读,更多相关《张孝祥struts高级实战进阶资料(39页珍藏版)》请在金锄头文库上搜索。

1、北京传智播客教育 ,Struts高级进阶,讲师:张孝祥,北京传智播客教育 ,内容大纲,MVC模式的回顾 回顾Struts的请求处理时序图 使用超连接的技巧 封装Formbean数据时的问题 防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 Validator框架 Struts请求处理过程的源码分析与digester,北京传智播客教育 ,MVC模式的回顾,用户请求,Web容器,Servlet,jsp,北京传智播客教育 ,Struts的基本原理(1),ActionServlet,用户请求,Action,Action,Action,Struts-

2、config.xml,Web容器,web.xml,北京传智播客教育 ,Struts的基本原理(2),ActionServlet,Action,FormBean,Validate 方法?,是,Input视图,视图1,视图2,视图,否,Validate 属性?,是,否,ActionForward,ActionForward,ActionForward,北京传智播客教育 ,Struts的请求处理时序图,北京传智播客教育 ,用户注册案例的实验基础工作,预备工作 下载和解压struts开发包(建议使用struts1.2) 查看struts的例子程序 Struts开发步骤: 1.新建web工程 2.把Ac

3、tionServlet及相关类引进来 3.在web.xml文件中配置ActionServlet 4.进行简要的需求分析与设计(见下页) 5.编写出各个部件(两个Action和两个jsp页面) 6.在struts配置文件中配置各个组件 7.在各个组件中编写代码把流程连接起来,在第一个jsp页面中先用超链接,暂不引入表单,先用直接用标签。,北京传智播客教育 ,注册用例的简要设计图,RegUserUI,Reguser.jsp,RegUser,Main.jsp,北京传智播客教育 ,标签,标签的三个好处: 使用不用关心web应用程序的路径和ActionServlet的映射路径。 可以自动附加jsessi

4、onid参数进行url重写。 可以对参数信息进行url编码。 备注: 标准标签也有标签的后两个作用。 实验步骤: 把ActionServlet的映射路径由*.do改为*.html,这时候需要修改前面案例中的jsp页面中的超链接,由这个错误引出标签的讲解。 启动一个新浏览器访问第一个Action,查看生成的超链接地址,刷新后再查看这个超链接地址,比较差异说明标签的url重写功能。 在的action属性值的路径后中直接加参数,但是不能对其中的中文字符进行url编码。 使用paramID和paramName等属性设置一个参数,可以完成中文参数的url编码。 使用name和property属性来设置多

5、个参数。,北京传智播客教育 ,本阶段应注意的要点:,Action是单实例和线程不安全的,在Action最好不要有可读写的成员变量。 struts-config.xml文件中的元素的path属性中没有.do,原因是映射到struts的路径可以不是.do嘛! struts-config.xml文件中的元素的path属性必须以“/”开头,forward中配置的jsp文件路径也必须以“/”开头,总之,在web应用程序中记住路径总是以“/”开头,就错不了!,北京传智播客教育 ,阶段与面试有关的目标,什么是MVC模式? 说说你对struts的理解? 独立用struts做一个注册程序(这一阶段只要做出基本骨

6、架就行) 怎样防止struts配置文件的膨胀? 说说软件开发的流程 说说你在struts项目中使用的是什么标签库? 能区分ActionMapping与Action的区别吗? 配置文件中的action元素中有哪几个属性必须设置 Struts框架查找出一个xx.do路径对应的Action.execute方法的线索。,北京传智播客教育 ,用户注册案例的实验 FormBean基础,步骤: 1.在网页中添加原始的标签、三个输入框(用户名,密码,密码2)和一个提交按钮。 2.由提交路径编写不方便引入和标签。 3.根据提交的错误信息,引入formbean,创建和配置formbean,formbean中全部用

7、基本属性的方式,在action中直接向response中打印出formbean的信息,然后进行访问测试。 4.在formbean中引入复杂属性user实体对象,formbean中包含user实体对象和password2字段。对于复杂属性对象一定要初始化,否则,在提交数据时就会出问题。 总结: 如果某个Action关联了一个FormBean,那么,当浏览器请求这个Action时,Struts框架将创建这个FormBean,把这个FormBean存储在相应的Web域中,并用请求参数来填充这个formbean。 对于请求消息中的每个参数(包括网页表单中的每个字段),其相关的ActionForm 通常

8、都有一个对应的属性来接受相应的参数值。,北京传智播客教育 ,用户注册案例的实验 FormBean表单校验,步骤: 1.引入表单校验和input属性的讲解,当formbean的password2与user的password不相等时,则认为出错。 2.用标签进行错误信息提示,引入struts中的国际化讲解。 3.用将提交按钮国际化。 4.用普通el表达式从formbean中提取数据回显,引出attribute属性的讲解。 5.用等标签回显数据,设置的value属性。 问题: 标签的作用?,北京传智播客教育 ,用户注册案例的实验 增加两星期自动登陆复选框,步骤: 1.在jsp页面中使用标签; 2.在

9、formbean中定义布尔类型的autoLogon成员变量; 3.在action中打印实验效果。 4.通过想取消复选框的勾选操作,引入reset方法的讲解,北京传智播客教育 ,用户注册案例的实验 与防止表单重复提交,标签的三个作用: 1.生成html文档的标签,其focus属性还可以生成相应的javasript代码; 2.检查Session中是否存在Token,是则生成隐藏字段,以防止表单重复提交; 3.获取action属性中路径所对应的scope域中的formbean,存在则获取,不存在则创建新的,再把这个formbean以一个特殊关键字保存在request中,以便其中的标签获取值时使用。

10、实验步骤: 1.先通过刷新浏览器的方式演示重复提交表单的效果 2.在第一个Action中调用saveToken 3.查看jsp页面的生成hidden字段 4. 在第二个action中调用isTokenValid 5.分析标签怎样回显示数据 问题:一个formbean对象除了通过ActionServlet处理请求的过程中创建,还可能在什么时候被创建?,北京传智播客教育 ,用户注册案例的实验 formbean属性的整数与日期类型,步骤: 1. 在formbean中增加int类型的height属性和在jsp页面中增加对应的标签。 2.由jsp页面的height字段的显示问题将height属性改为In

11、teger类型。 3.在formbean中增加java.util.Date类型的height属性和在jsp页面中增加对应的标签。 4.由无法完成Date类型转换问题,引出了Struts中的类型转换器问题,自己编写Date类型转换器。 5.编写ActionServlet的子类ItcastActionServlet,在init方法中注册Date类型转换器。 6.用jstl的标签回显日期。 7.由表单校验出错后回到输入jsp页面时的height字段的显示问题引出ActionServlet的convertNull初始化参数的讲解。,北京传智播客教育 ,用模板方法设计模式防止表单重复提交,问题: 业务中

12、涉及多个表单提交,每个表单都要防止重复提交,有什么好的办法? 方案: 设计两个模板Action,一个叫ShowUIAction,另一个叫SubmitFormAction。第一个Action的execute调用saveToken后,调用内部的doExecute抽象方法,第二个Action的execute方法调用isTokeValidate和resetToken后,调用内部的doExectue抽象方法。,北京传智播客教育 ,阶段与面试有关的目标,在action中可不可以直接向浏览器输出内容? struts配置文件中的action元素的attribute属性的作用? struts配置文件中的acti

13、on元素的input属性的作用?,北京传智播客教育 ,用户注册案例的实验 注册成功后显示所有用户列表,步骤: 1.编写一个能够实现User对象的CRUD操作的内存DAO,并将这个DAO设计为单例。这时候要为User对象增加id属性, 并且DAO要维护User对象的id属性的自动增长。 2.修改注册的成功以后返回的主页面,主页面显示用户列表信息,用户列表的显示要求奇偶明暗相间。 3. 为了为主页面提供用户列表数据,修改注册Action,让其获得并在request域中存储用户列表。 4.增加一个列表action,将获得并在request域中存储用户列表的功能移植到该action中。 5.刷新列表页

14、面出现问题,引出redirect类型的forward的讲解。,北京传智播客教育 ,用户注册案例的实验 增加用户名已存在的业务校验,表单校验错误和业务逻辑校验错误的处理流程: 表单校验: 请求参数ActionFormActionForm.validate表单校验错误则返回errorslogon.jsp显示出错误信息 业务逻辑校验:请求参数ActionFormActionForm.validate表单校验成功则调用Action.execute方法逻辑校验错误产生errors回logon.jsp显示错误信息 步骤: 1.在Action中增加用户名已存在则回到输入页面并能显示出错误提示信息的代码。 2

15、.分析ActionMessages内部的存储结构和标签的显示原理 3.实现错误提示信息的国际化,提示信息中要用一个参数来替代字段名,即参数化。 4.将提示信息的参数值改为也从资源文件中获取,并且也是可国际化的,即参数的国际化。 5.将用户名不能为空的表单校验的错误提示信息也用一个参数来替代字段名,从而引出在formbean中的参数国际化问题,即如何得到MessageResouce对象和Locale信息。,北京传智播客教育 ,MyEclipse工具提供的struts支持,步骤: 创建一个新Web工程 使用MyEclipse增加struts功能 单独创建ActionForm、Action,注意要设

16、置use case的名字 一次性创建ActionForm、Action和用作input的jsp页面 借机提示一下DynaActionForm的而应用,北京传智播客教育 ,用户注册案例的实验 增加一组复选框,步骤: 1.用原始的html标签在网页中写出复选框列表,属性名称为specialities; 2.在formbean中定义接受复选框参数的数组属性,并在action中打印出数组结果; 3.将jsp页面中的复选框列表项的信息改为由控制器组件提供和用JSTL标签渲染,每一个列表项的信息需要用一个JavaBean对象表示; 4.由表单校验出错后回到输入jsp页面无法正常显示复选框列表,引出action元素的input属性配置问题; 5.完成表单校验出错后回到输入jsp页面时还能保留复选框的上次选择结果的jstl代码; 6.使用完成复选框列表的自动生成和自动填充复选框内容。,北京传智播客教育 ,Struts开发一个用例的参考模式图,RegUserUI,RegUser.jsp,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号