SSH教学课件:C05 Struts2的输入校验_第1页
SSH教学课件:C05 Struts2的输入校验_第2页
SSH教学课件:C05 Struts2的输入校验_第3页
SSH教学课件:C05 Struts2的输入校验_第4页
SSH教学课件:C05 Struts2的输入校验_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

第七章Struts2的输入校验本章主要内容7.1简介7.2用validate方法进行输入校验validate()方法输入校验、validateXxx()方法输入校验7.3基于框架的输入校验使用字段校验的输入校验、使用非字段校验的输入校验7.1简介Web技术的发展给用户带来了方便,使用浏览器就可以完成某些工作。在方便使用的同时,也将系统输入界面暴露给用户,面临大量恶意破坏性输入的考验。例如金额的输入框中输入字母汉字,日期的输入框输入不正确的格式或不可能存在的日期等。这些都需要我们通过输入校验来解决。输入校验直接影响了系统的抗破坏性能和稳定性。实际上,输入校验往往同类型转换联系在一起,都是对用户输入数据的规范化检查和处理,我们可以通过JavaScript来实现客户端校验,但一般都只是完成初步的检查和过滤,但对于需要与服务器交互的逻辑性校验就无能为力了,虽然提高了相应速度,但是功能有很大局限性,代码维护性也不好。我们不来讲解JavaScript的客户端校验,只是来看看Struts2为我们提供的输入校验方法。7.2用validate方法进行输入校验7.2.1validate()方法输入校验我们先来学习validate()方法进行校验。创建“com.ntc.sample.sshvalidate”的package包。并在其下边建立ValidateAction类,关键代码如下所示。校验逻辑如代码注释,对于用户名,必须输入,对于密码必须长度在6-10。详细参看教材例7.1。注意:使用validate()方法必须继承ActionSupport类7.2用validate方法进行输入校验7.2.1validate()方法输入校验接着创建validate.jsp,用来输入用户名和密码。代码如下所示,详细参看教材例7.2。

7.2用validate方法进行输入校验7.2.1validate()方法输入校验然后创建校验成功后的页面detail.jsp,代码如下7.2用validate方法进行输入校验7.2.1validate()方法输入校验在src目录下建立配置文件struts.xml,如下所示7.2用validate方法进行输入校验7.2.1validate()方法输入校验初始化的页面如下图所示7.2用validate方法进行输入校验7.2.1validate()方法输入校验点击确认后,我们的校验执行了,这里,每个输入域都会出现对应的错误信息,效果图如下,参看教材图7.2。7.2用validate方法进行输入校验7.2.1validate()方法输入校验当我们输入符合条件的数据但不是admin和password时,例如输入admi和1234567时,返回输入页面但是没有出错信息,说明校验是正常通过的只是逻辑不正确。7.2用validate方法进行输入校验7.2.1validate()方法输入校验我们再来输入admin和password,将迁移到detail.jsp,表示校验正常,逻辑也正确。7.2用validate方法进行输入校验7.2.1validate()方法输入校验我们还可以在validate.jsp中加入如下代码,这样可以把所有的异常信息显示出来。我们把它放在了</body>上边,出错的时候,错误信息除了在每个输入框处显示外,在页面最下端也会把所有的错误显示出来。

效果图7.2用validate方法进行输入校验7.2.2validateXxx()方法输入校验对于使用validate()方法校验,我们在Action中所有的处理方法都会进行数据校验,而validateXxx()方法则是对不同的业务方法进行数据校验。例如,我们有一个login()方法,我们使用validateLogin()方法来处理数据输入校验。我们来看一个例子里面的ValidateXxxAction类,里边定义一个login方法,并建立validateLogin方法注意:由于validate()方法对Action类中所有方法进行校验,所以,在使用validateXxx()方式时,最好去掉validate()方法的代码,或者检查两者不需要重复校验。7.2用validate方法进行输入校验7.2.2validateXxx()方法输入校验以下是校验类的校验方法的主要代码注意:使用validateXxx()方法必须继承ActionSupport类7.2用validate方法进行输入校验7.2.2validateXxx()方法输入校验我们再来看validatexxx.jsp,只是form的action改成了validatexxx,其他的也没有变化,主要代码如下7.2用validate方法进行输入校验7.2.2validateXxx()方法输入校验Struts.xml关键代码如下7.3基于框架的输入校验我们上节用validate()和validateXxx()方法进行了校验,这种方式的校验的弊端就是写在了Action实现类中,使Action变得复杂臃肿,同时提高了Action同输入校验之间的耦合度。Struts2框架提供了一种基于框架文件的输入校验方式,将校验规则保存在特定的框架文件中,这样,输入校验和Action实现了分离,提高了系统的维护性。基于框架的校验有两种编写校验规则文件的写法,一种是使用字段校验的写法,一种是使用非字段校验的写法。7.3基于框架的输入校验7.3.1使用字段校验的输入校验使用Struts2的框架校验规则文件进行输入校验,需要建立一个特定的校验规则文件就可以了。Struts2框架的校验规则文件就是一个XML格式的配置文件,命名规则为“Action名称-validation.xml”。保存在同Action实现类相同的目录下。7.3基于框架的输入校验7.3.1使用字段校验的输入校验我们来创建一个使用字段校验的例子。首先,我们创建ValidateByFieldXmlAction的Action类注意:使用字段校验需要继承ActionSupport类7.3基于框架的输入校验7.3.1使用字段校验的输入校验下面我们在“com.ntc.sample.sshvalidate”包下建立字段校验规则文件,将其命名为ValidateByFieldXmlAction-validation.xml。大家可以对应它和前边Action中校验代码比较一下。7.3基于框架的输入校验7.3.1使用字段校验的输入校验ValidateByFieldXmlAction-validation.xml的关键代码如下:type指定校验类型,常用校验类型如下:required:必填字段校验requiredstring:非空String检查int:Int类型范围校验double:Double类型范围校验date:日期校验Expression:使用OGNL表达式的校验fieldexpression:针对一个字段使用OGNL表达式的校验email:Email校验url:URL校验regex:正则表达式校验stringlength:字符产长度校验7.3基于框架的输入校验7.3.1使用字段校验的输入校验我们再来创建validatebyfieldxml.jsp,关键代码如下7.3基于框架的输入校验7.3.1使用字段校验的输入校验在struts.xml中关键代码如下7.3基于框架的输入校验7.3.1使用字段校验的输入校验这次index.html中的链接变成了“使用字段校验配置文件”,和以前一样,我们不输入用户名并输入密码12345678901,效果图如下,参看教材图7.6。注意:我们通过URL可以看到,其实,用户请求已经通过框架转发给Action了,即已经走到后台中了,对于这种简单的校验,能不能在前台做呢?答案是肯定的,我们只需要修改一个地方,即在form标签中追加validate=“true”,就可以不走到后台,而只是通过Struts2框架将定义的字段校验内容转换成JavaScript脚本,嵌入到JSP中,实现客户端的校验了。7.3基于框架的输入校验7.3.2使用非字段校验的输入校验我们提到的使用字段校验的输入校验示例中,校验规则文件里<validators>是校验规则文件里的根元素,该元素下面出现的是<field.../>子元素,而<field.../>元素中包含了<field-validator.../>元素。这种将<field.../>即字段元素作为<validators>元素的第一级子元素的情况为字段优先,也可以称为字段校验。而我们现在要说的非字段校验是在<validators>元素中,以<validator.../>作为第一级子元素,并在该元素下面使用<param.../>作为子元素来定义,即校验器优先。

温馨提示

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

最新文档

评论

0/150

提交评论