第五讲数据校验课件.ppt
《第五讲数据校验课件.ppt》由会员分享,可在线阅读,更多相关《第五讲数据校验课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五讲数据校验第1页,此课件共51页哦本次课的主要内容输入校验342.第2页,此课件共51页哦本章主要内容v 简介v 用validate方法进行输入校验validate()方法输入校验、validateXxx()方法输入校验 v 基于框架的输入校验使用字段校验的输入校验、使用非字段校验的输入校验第3页,此课件共51页哦简介vWeb技术的发展给用户带来了方便,使用浏览器就可以完成某些工作。在方便使用的同时,也将系统输入界面暴露给用户,面临大量恶意破坏性输入的考验。例如金额的输入框中输入字母汉字,日期的输入框输入不正确的格式或不可能存在的日期等。这些都需要我们通过输入校验来解决。输入校验直接影响了
2、系统的抗破坏性能和稳定性。v实际上,输入校验往往同类型转换联系在一起,都是对用户输入数据的规范化检查和处理,我们可以通过JavaScript来实现客户端校验,但一般都只是完成初步的检查和过滤,但对于需要与服务器交互的逻辑性校验就无能为力了,虽然提高了相应速度,但是功能有很大局限性,代码维护性也不好。我们不来讲解JavaScript的客户端校验,只是来看看Struts2为我们提供的输入校验方法。第4页,此课件共51页哦Struts 2输入校验v 输入校验分为客户端校验和服务器端校验。v 客户端校验可以过滤掉用户的错误操作,是第一道防线,一般使用JavaScript代码实现。仅有客户端验证还是不够
3、的。攻击者还可以绕过客户端校验直接进行非法输入,这样可能会引起系统的异常,所以必须加上服务器端的验证。但仅有服务器端验证也是不行的,客户的错误操作总是提交到服务器,由服务器端进行验证返回错误信息,这样会加重服务器的负担。v 所以客户端验证和服务器端验证缺一不可,两者结合起来才可以构建健壮的系统。第5页,此课件共51页哦什么是输入校验v输入校验,从字面上来看好像是指对如输入的密码或者用户名输入错误的校验。其实这个不算输入校验,这个算是业务逻辑的判断了。输入校验是对输入的用户名长度、密码长度、年龄信息等的判断。为了给大家一个感官上的认识,现在打开163邮箱的注册页面,如图所示。第6页,此课件共51
4、页哦为什么要进行输入校验v那为什么要进行输入校验呢?使用它有什么好处呢?为了更好地说明,来看下面这个注册页面,如图所示。v现在按常规输入用户注册信息,单击“注册”按钮进行注册。页面跳转到注册信息显示页,如图所示。第7页,此课件共51页哦输入校验v Struts2的输入校验步骤对请求参数执行类型转换转换是否出错将错误提示保存到ActionContext内建验证器进行验证conversionError负责将其转换成fieldError执行validateXxx()方法执行validate()方法包含fieldError吗调用Action的处理方法呈现视图资源是否是,跳过Action处理逻辑,返回i
5、nput视图否第8页,此课件共51页哦输入校验v 手动完成输入校验重写validate()方法 继承ActionSupport类,重写validate()方法 实例:OverrideValidate重写validateXxx()方法 对于多个处理逻辑的校验,会有多个validateXxx()方法,重写这多个方法,可以实现对不同处理逻辑的独立校验处理。实例:ValidateXxx第9页,此课件共51页哦手工编写代码实现输入校验通过重写validate()或validateXxx()方法实现,validate()方法会校验action中所有与execute方法签名相同的方法。validateXxx
6、()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写。当某个数据校验失败时,我们应该调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统的fieldErrors包含失败信息,struts2会将请求转发到名为input的result。在input视图中可以通过显示失败信息。validate()使用例子:使用例子:Overridepublic void validate()if(username=null&.equals(username.
7、trim()this.addFieldError(username,用户名不能为空用户名不能为空);validateXxx()方法使用例子:方法使用例子:public String add()throws Exceptionreturn success;public void validateAdd()if(username=null&.equals(username.trim()this.addFieldError(username,用户名不能为空用户名不能为空);验证失败后,请求转发至验证失败后,请求转发至input视图:视图:/WEB-INF/page/addUser.jsp在在addU
8、ser.jsp页面中使用页面中使用显示失败信息。显示失败信息。第10页,此课件共51页哦输入校验的流程1。类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。2。如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息封装到fieldErrors里,然后执行第3步。如果类型转换没有出现异常,则直接进入第3步。3。系统通过反射技术调用action中的validateXxx()方法,Xxx为方法名。4。调用action中的validate()方法。5。经过上面4步,如果系统中的fieldErrors存
9、在错误信息(即存放错误信息的集合的size大于0),系统自动将请求转发至名称为input的视图。如果系统中的fieldErrors没有任何错误信息,系统将执行action中的处理方法。第11页,此课件共51页哦用validate方法进行输入校验1 1 validat te()方法输入方法输入校验校验我们先来学习validate()方法进行校验。创建“com.ntc.sample.sshvalidate”的package包。并在其下边建立ValidateAction类,关键代码如下所示。校验逻辑如代码注释,对于用户名,必须输入,对于密码必须长度在6-10。注意:使注意:使用用validat te
10、()方法必须方法必须继承继承Act tionSuSupportrt类类第12页,此课件共51页哦用validate方法进行输入校验validate()方法输入校验方法输入校验接着创建validate.jsp,用来输入用户名和密码。代码如下所示,第13页,此课件共51页哦 用validate方法进行输入校验.1 validate()方法输入校验方法输入校验 然后创建校验成功后的页面detail.jsp,代码如下所示。第14页,此课件共51页哦 用validate方法进行输入校验.1 validate()方法输入校验方法输入校验 在src目录下建立配置文件struts.xml,如下所示。第15页,
11、此课件共51页哦 用validate方法进行输入校验.1 1 validat te()方法输入方法输入校验校验初始化的页面如下图所示。第16页,此课件共51页哦 用validate方法进行输入校验.1 validate()方法输入校验方法输入校验 点击确认后,我们的校验执行了,这里,每个输入域都会出现对应的错误信息,效果图如下。第17页,此课件共51页哦 用validate方法进行输入校验.1 validate()方法输入校验方法输入校验 当我们输入符合条件的数据但不是admin和password时,例如输入admi和1234567时,返回输入页面但是没有出错信息,说明校验是正常通过的只是逻辑
12、不正确。第18页,此课件共51页哦 用validate方法进行输入校验.1 validate()方法输入校验方法输入校验 我们再来输入admin和password,将迁移到detail.jsp,表示校验正常,逻辑也正确。第19页,此课件共51页哦 用validate方法进行输入校验.1 validate()方法输入校验方法输入校验 我们还可以在validate.jsp中加入如下代码,这样可以把所有的异常信息显示出来。我们把它放在了上边,出错的时候,错误信息除了在每个输入框处显示外,在页面最下端也会把所有的错误显示出来。效果图。第20页,此课件共51页哦 用validate方法进行输入校验.2
13、validateXxx()方法输入校验方法输入校验v对于使用validate()方法校验,我们在Action中所有的处理方法都会进行数据校验,可以把所有要验证的逻辑代码都写入其中,但是却不利于维护,而validateXXX可以将某逻辑的校验代码从validate分离出来。v validateXxx()方法则是对不同的业务方法进行数据校验。例如,我们有一个login()方法,我们使用validateLogin()方法来处理数据输入校验。v我们来看一个例子里面的ValidateXxxAction类,里边定义一个login方法,并建立validateLogin方法v注意:由于注意:由于validat
14、e()方法对方法对Action类中所有方法进行校验,所以,在使用类中所有方法进行校验,所以,在使用validateXxx()方方式时,最好去掉式时,最好去掉validate()方法的代码,或者检查两者不需要重复校验。方法的代码,或者检查两者不需要重复校验。第21页,此课件共51页哦 用validate方法进行输入校验.2 validateXxx()方法输入校验方法输入校验v 以下是校验类的校验方法的主要代码。注意:使注意:使用用validat teXxx()方法必方法必须继承须继承Act tionSuSupportrt类类第22页,此课件共51页哦 用validate方法进行输入校验.2 va
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 数据 校验 课件
限制150内