




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Struts第二章,类型转换与输入验证,1,目标,2.1拦截器2.2类型转换2.3输入验证2.4fielderror标签,2,Struts截拦器,截拦器是Struts2中最重要的概念之一,Struts中有80%的功能都通过截拦器实现.截拦器意义:提高更高层次的解耦,无须侵入框架本身便可以添加新的功能.截拦器是AOP的一种实现,底层通过动态代理模式完成,3,Struts截拦器与Action的关系,将一些功能放到截拦器,可以降低Action的复杂性,提高重用性.截拦器的典型使用封装请求参数文件上传异常处理.拦截器是Action的截拦器,4,截拦器工作原理,5,截拦器运行的关键代码,6,默认截拦器,如果没有为Action指定截拦器,则使用defaultStack作为默认截拦器下面的功能由默认截拦器提供请求参数封装文件上传类型转换异常处理一旦为Action指定了截拦器,则默认截拦器不再起作用,必须显示指定默认截拦器.,7,截拦器定义,截拦器是一个继承自AbstractInterceptor抽象类或实现Interceptor接口的类,可以重写的方法:publicvoidinit():执行初始化动作publicvoiddestroy():执行销毁动作Stringintercept(ActionInvocationinvocation):执行截拦动作参数invocation:包含了Action的引用,invocation.invoke()方法用于将控制权转给下一个截拦器或者调用Action的execute()方法.返回值为逻辑视图AbstractInterceptor为init和destroy方法提供了默认实现.,8,截拦器示例,publicclassFirstInterceptorextendsAbstractInterceptorOverridepublicStringintercept(ActionInvocationinvocation)throwsExceptionSystem.out.println(Action:+invocation.getAction().getClass().getName();returninvocation.invoke();,9,截拦器配置及使用,10,要点,如果Action配置了多个截拦器,截拦器的执行顺序与配置顺序相同截拦器可以注入属性值,在struts.xml文件中通过value实现,作用于interceptor或interceptor-ref.通过intercept的返回值,可以改变请求的流程控制(*).一般来说,invocation.invoke()方法总是要调用的.因为Action定义了截拦器,所以默认截拦器将失效.如果要用到默认截拦器提供的功能,必须显示配置在Action中.,11,示例-给Action属性赋值,12,/index.jsp,13,方法过滤,一般情况下,Action的任何一个方法执行时都会调用截拦器.通过继承自MethodFilterInterceptor的截拦器可以指定哪些方法会执行截拦器,哪些不会.执行动作定义在StringdoIntercept(ActionInvocationinvocation)方法中.excludeMethods:指定哪些方法不调用截拦器(黑名单)includeMethods:指定哪些方法会调用截拦器(白名单)如果includeMethods和excludeMethods冲突,includeMethods取胜.,14,方法过滤示例,/success.jspm1,m2m2注:m1方法不调用methodint截拦器,m2会调用截拦器,15,要点,如果不指定excludeMethods和includeMethods,则所有方法都会被截拦器截拦.如果方法在excludeMethods和includeMethods都配置了,则includeMethods取胜.如果需要过滤多个方法,方法名之间用逗号隔开.,16,截拦器栈,将多个截拦器组合成一个截拦器栈配置使用,17,内置拦截器,erceptor.TimerInterceptor用于打印Action执行的时间erceptor.TokenInterceptor防止重复提交表单方法过滤拦截器excludeMethodsincludeMethods和配合使用在Action中必须定义名为invalid.token的result,如果重复提交则自动跳转到该逻辑视图,18,默认截拦器,如果希望所有Action都被某个截拦器或截拦器栈截拦,可以使用指定默认截拦器如果Action显示定义了截拦器,则默认截拦器失效.,19,小结,截拦器的作用和意义截拦器的定义与配置默认截拦器分析截拦器栈,20,传统类型转换,客户端浏览器只能将字符串传送到服务器(文件上传除外),而服务器端java语言是强类型语言,数据类型非常丰富,这就造成B/S两端的类型不兼容问题.传统做法:将客户端数据转变成intintv=Integer.parseInt(request.getParameter(v);缺陷:过程烦琐枯燥.,21,Struts2类型转换,Struts2提供了强有力的表现层类型转换机制,无需程序员过多干预即可自动完成转换.Struts能自动处理类型转换过程中出现的未知异常.下面的数据类型会自动转换:boolean,char,int,long,float,double基础类型,包括封装类型和对应数组.Date,String数组,元素类型为String的List,22,自定义类型转换器,类型转换器是一个继承自StrutsTypeConverter(抽象类)的类,必须重写两个方法:publicObjectconvertFromString(Mapcontext,Stringvalues,ClasstoClass)从字符串转换成目标类型publicStringconvertToString(Mapcontext,Objecto)将目标类型转换成字符串注:上面的两个方法都必须重写.,23,自定义类型转换器-示例,24,注册自定义类型转换器,注册自定义类型转换器有两种方法局部类型转换器:只有特定的Action才可以使用注册方法:在Action所在的包中建立properties文件,文件名格式:Action类名-perties,内容如下:inver=com.sdhandson.conversition.IntArrayConverter其中:inver是action属性名,全局类型转换器:所有Action都可以使用注册方法:在classpath下建立名为perties的文件,内容如下:目标类型(全限定名)=转换器全限定名,25,处理类型转换异常,转换出错后,ConversionErrorInterceptor截拦器会截拦转换异常,该截拦器会带领我们进入result为input的URL,并通过显示错误信息.前提:Action必须是ActionSupport的子类如果不使用struts自带的错误信息,可以在Action所在的包中定义”Action类名.properties”文件,内容如下:invalid.fieldvalue.inver=整型数组转换出错其中,invalid.fieldvalue固定,inver是属性名称,26,类型转换器小结,一般来说,struts为我们提供的默认转换器能实现大部分需求,不需要重新定义新的转换器.,27,验证器,验证器和转换器是一对兄弟,他们总是如影随形.所有用户的输入都是邪恶的先类型转换,再验证Struts2主要通过验证框架来完成数据验证.Action必须继承ActionSupport,28,Struts2的验证框架能做什么?,验证日期范围验证双精度/整型/长整型数值范围邮箱验证验证字段关系必填项验证字符串长度验证URL验证正则表达式验证正则表达式能解决绝大部分验证问题,29,使用struts2验证框架我们应该做什么?,我们可以为每一个单独的Action定义一个验证文件验证文件格式:Action类名-validation.xml也可以为Action的方法定义一个验证文件:必须先为方法配置action验证文件格式:Action类名-name-validation.xml注:验证文件要和Action类放在同一包中,30,验证文件怎么写?,两个方面DOCTYPE从xwork-core-2.1.6.jar中可以找到验证内容查看doc文档,有详尽的说明和示范,31,验证示例,输入员工信息应该遵循下面的规范员工姓名必填,且在6-20个字符之间员工年龄必须在18-100之间员工的邮箱必须输入正确格式员工电话号码只接受手机号,32,验证示例-Action,publicclassEmployeeActionextendsActionSupportprivateStringename;privateintage;privateStringemail;privateStringphone;,33,验证示例验证文件,验证文件名称为:EmployeeAction-validation.xml验证员工姓名true员工姓名不能为空620员工姓名必须在$minLength-$maxLen
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025注册电气工程师检测卷及答案详解(全优)
- 2024焊工考试试卷(考点梳理)附答案详解
- 2025年精装修建材订购合同
- 2025家庭养老护理员健康管理服务合同
- 2025年东莞金融控股集团有限公司人员招聘笔试备考试题及1套参考答案详解
- 法律硕士考前冲刺练习题及参考答案详解【综合题】
- 2024年咨询工程师试卷及完整答案详解【易错题】
- 2024-2025学年内科护理(中级)练习题含完整答案详解【名师系列】
- 2025年数电基础试题及答案
- 2025年吉林执业药师考试真题-吉林执业药师考试真题及答案
- 住房供给调控预案
- 培训行业转介绍
- 文科物理(兰州大学)学习通网课章节测试答案
- 人教版高二数学(上)选择性必修第一册1.2空间向量基本定理【教学设计】
- catia考试图纸题目及答案
- pos机风险管理办法
- 2025年行业机器人边缘计算技术应用与场景分析
- 2025年安徽省公务员录用考试《行测》真题及答案
- 2025年加油站行业需求分析及创新策略研究报告
- 山河已无恙+吾辈当自强+课件-2025-2026学年高二上学期用《南京照相馆》和731上一节思政课
- 中国兽药典三部 2020年版
评论
0/150
提交评论