收藏 分享(赏)

第5讲 Struts高级应用.ppt

上传人:dzzj200808 文档编号:3352762 上传时间:2018-10-17 格式:PPT 页数:66 大小:2.03MB
下载 相关 举报
第5讲 Struts高级应用.ppt_第1页
第1页 / 共66页
第5讲 Struts高级应用.ppt_第2页
第2页 / 共66页
第5讲 Struts高级应用.ppt_第3页
第3页 / 共66页
第5讲 Struts高级应用.ppt_第4页
第4页 / 共66页
第5讲 Struts高级应用.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、Struts高级应用,目 录,1 Struts2的类型转换 2 Struts2的输入校验 3 Struts2的文件上传下载 4 Struts2的拦截器机制 5 MyEclipse中的Struts2实战 6 本讲小结,为什么需要类型转换?,在Web世界中输入输出是没有类型概念的,任何数据类型都被作为字符串处理;但是在后台进行数据处理时,需要对前台的数据进行类型转换。,Struts2中的类型转换,Struts2的类型转换是基于xwork的;对基本类型的转换可以自动完成;对用户自定义类型的转换需要在后台进行相应处理。,Struts2的自动类型转换,Struts2内建的类型转换(双向) String

2、to String int to String date to String etc实际操作演示,Struts2的自动类型转换,基于OGNL的类型转换 Action里面定义复合类型的对象 前台Jsp中使用OGNL访问 如:user.username实际操作演示,Struts2的自定义类型转换,一般来说,Struts2的自动类型转换能满足大部分的需要。但在某些特殊情况下,需要把一个复合类型的变量转换为字符串在前台实现,或把前台的多个字符串组装为一个复合类型,这就需要自定义类型转换。 Struts2自定义类型转换器注册方式 局部类型转换 仅仅对某个action的属性起作用 全局类型转换 对所有Ac

3、tion特定类型的属性都会生效,制作局部类型转换器的步骤,1.自定义转换类继承DefaultTypeConverter 类重写convertValue(Map context, Object value, Class toType) 方法或继承StrutsTypeConverter 类重写Object convertFromString(Map context,String values,Class toClass) 和String convertToString(Map context, Object o) 方法 2.配置文件: 文件名:Action类名-conversion.propert

4、ies 需要和对应Action在同一目录下 文件内容: 属性名=转换类名 (多个属性就写多行),制作全局类型转换器的步骤,1. 同局部类型转换器的步骤相同 2.配置文件: 文件名:xwork-conversion.properties文件内容:需要类型转换的自定义类名=转换类名,自定义类型转换器演示,用户自定义类型转换 MyPoint to String String to MyPoint 实际操作演示,表单输入界面(简单),自定义类MyPoint,定义转换类1,后台Action,设置局部转换,设置全局转换,定义转换类2,表单输入界面(复杂),Action类的定义,使用泛型的类型转换(推荐),

5、定义转换类3(泛型),输出成功界面(泛型),类型转换中的错误处理,全局处理 在应用的国际化资源文件中重写该变量值 xwork.default.invalid.fieldvalue=0类型转化错误 局部处理 在ActionName.properties中重写该变量值 invalid.fieldvalue.属性名=提示的错误信息 实际操作演示,目 录,1 Struts2的类型转换 2 Struts2的输入校验 3 Struts2的文件上传下载 4 Struts2的拦截器机制 5 MyEclipse中的Struts2实战 6 本讲小结,校验的概念,校验的定义:对异常输入的过滤 校验的分类 客户端校验

6、 过滤用户的误操作 主要通过JavaScript代码完成 速度快,不和服务器交互 服务器端校验 校验逻辑错误 通过在服务器端编码实现 需要和服务器交互,Struts2的输入校验之服务器端校验,手动校验 validate()方法 属于硬编码方式框架校验 以xml文件的形式 分为字段校验和非字段校验,框架校验-xml头文件, ,框架验证-dtd文件,框架验证-字段校验示例,框架验证-判断密码是否一致, 两次密码输入不一致! ,框架验证-字段校验示例,框架验证-非字段校验,框架验证-验证器的短路,框架验证-内建校验器,Struts2提供了大量的内建校验器,可以满足大部分应用的校验需求。 开发者只需要

7、使用这些校验器即可。 开发者也可以自定义校验器。,框架验证-内建校验器,必填校验器:required 必填字符串校验器:requiredstring 整数校验器:int,long,short 日期校验器:date 表达式校验器:expression 邮件地址校验器:email 其他内建校验器,不同方法的校验(validate方法),不同方法的校验(框架校验),struts2提供的客户端校验,1.form主题(theme)不能为simple2.将form的validate设为true3.最好不要使用struts2提供的客户端校验,Struts2所支持的其他类型客户端校验,纯JavaScript客

8、户端校验 更灵活,速度更快 推荐使用Ajax客户端校验 可以不刷新页面显示错误信息 需要使用ajax主题,客户端校验- JavaScript,目 录,1 Struts2的类型转换 2 Struts2的输入校验 3 Struts2的文件上传下载 4 Struts2的拦截器机制 5 MyEclipse中的Struts2实战 6 本讲小结,使用Struts2控制文件上传,为了能上传文件,必须将表单的method设置为POST,将enctype设置为multipart/form-data 步骤 实现文件上传的Action 配置文件上传的Action 实现文件过滤 手动实现 拦截器实现 修改错误提示 实

9、际操作演示,使用Struts2控制文件上传,如果表单中包含一个name为xxx的文件域,则对应Action需要三个属性来封装该文件域的信息 类型为File的xxx属性:文件内容 类型为String的xxxFileName属性:文件名 类型为String的xxxContentType属性:文件类型,使用Struts2控制文件上传, Struts 2完成上传 用户名: 上传文件: ,使用Struts2控制文件上传,使用Struts2控制文件上传,注意 上传文件是放在Web服务器的相应路径下面设置上传文件的大小限制设置值的单位为字节byte,使用Struts2控制文件下载,Struts2提供了str

10、eam结果类型,该结果类型就是专门用于支持文件下载功能的。 步骤 实现文件下载的Action 配置文件下载的Action 下载前的授权控制实际操作演示,使用Struts2控制文件下载,使用Struts2控制文件下载,contentType内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片 inputName下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方

11、法 contentDisposition文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:attachment;filename=“struts2.txt“,表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename=“struts2.txt“,那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline;filename=“struts2.txt“ bufferSize下载缓冲区的大小,教材例子,直接使用Html文件不能实现文件名中带有汉字

12、的文件下载使用struts2的action可以,一个综合性的文件上传下载例子,目 录,1 Struts2的类型转换 2 Struts2的输入校验 3 Struts2的文件上传下载 4 Struts2的拦截器机制 5 MyEclipse中的Struts2实战 6 本讲小结,Struts2的拦截器,拦截器体系是Struts2框架的重要组成部分 大量的内置拦截器完成了框架大约70%的工作 params拦截器:负责解析参数和赋值工作 I18n拦截器:负责把所选locale放入用户session timer拦截器:输出action的执行时间 token拦截器:防止重复提交 其他内置拦截器 Struts2

13、已经默认启用了大量通用功能的拦截器(通过继承struts-default包实现),Struts2的拦截器机制,拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用。正如 Struts2的Reference中讲述的,Struts2的Interceptor,其拦截的对象是Action代码,可以定义在Action代码之前或者之后执行拦截器的代码。,Struts2的拦截器机制,Struts2的拦截器机制,1. 整个结构就如同一个堆栈,除了Action以外,堆栈中的其他元素是Interceptor 2. Action位于堆栈的底部

14、。由于堆栈“先进后出“的特性,如果我们试图把Action拿出来执行,我们必须首先把位于Action上端的Interceptor拿出来执行。这样,整个执行就形成了一个递归调用 3. 每个位于堆栈中的Interceptor,除了需要完成它自身的逻辑,还需要完成一个特殊的执行职责。这个执行职责有3种选择: 1) 中止整个执行,直接返回一个字符串作为resultCode 2) 通过递归调用负责调用堆栈中下一个Interceptor的执行 3) 如果在堆栈内已经不存在任何的Interceptor,调用Action,Struts2的拦截器机制,配置拦截器,定义拦截器的格式可以把多个拦截器配置为一个拦截器栈

15、 使用拦截器的格式 ,拦截器栈介绍,作用:把多个拦截器或拦截器栈配置在一个拦截器栈内,方便用户调用 拦截器栈可以由多个拦截器组成 也可以由别的拦截器栈和拦截器等组成,用户自定义拦截器的步骤,自定义拦截器类需要实现com.opensymphony.xwork2.interceptor.Interceptor接口 或者是继承AbstractInterceptor类 实现或是重载interceptor(ActionInvocation)方法 在struts.xml文件中定义拦截器 在struts.xml文件中使用拦截器,实际操作演示,用户权限验证拦截器 当浏览者需要请求执行某个操作时,应用需要先检查

16、浏览者是否已登录,以及是否有足够的权限来执行该操作实际操作演示,目 录,1 Struts2的类型转换 2 Struts2的输入校验 3 Struts2的文件上传下载 4 Struts2的拦截器机制 5 MyEclipse中的Struts2实战 6 本讲小结,MyEclipse中的Struts2实战,动手练习书上例子可以参考随书附带光盘的源代码,目 录,1 Struts2的类型转换 2 Struts2的输入校验 3 Struts2的文件上传下载 4 Struts2的拦截器机制 5 MyEclipse中的Struts2实战 6 本讲小结,本讲小结,学习了Struts2的高级应用多利用网络资源多动手实践 师傅领进门 修行在个人,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报