1. validate()验证

将对页面表单验证的内容写到validate()方法中,实现验证和业务处理内容的分离

在Action中添加 validate()方法
   public void validate(){
     if(//****){
           addFieldError("name","XX不能XXX。。。。");  // 如果条件不匹配,可以使用 addFieldError()方法添加到对ActionContext中。
     }
    }

在JSP页面 通过  <s:fielderror/>  显示错误信息

Action中添加了validate()方法后, 一旦在验证过程中添加了验证信息,那么Struts2框架会更具Action的配置跳转到input的视图页面。

提示:1) 接受参数时, 数据失败也会调用validate()方法
          2) validate()方法验证不通过,不会执行业务方法

2. validateXxx() 验证

当多个表单提交到同一个action页面是,validate()方法对所有表单生效,可以使用validateXxx()方法实现对某一个业务的验证

例如:

JSP 表单  提交到  Login.action 的 login() 方法, 可以再Login.action 对应类中添加   validateLogin() 的验证方法

提示:

   1) validate()方法会对Action类中所有业务方法起作用
  2)validateXxx()方法实现对某个业务方法进行数据验证。
    i:Struts2支持validateXxx()方法进行数据验证
    i:使用validateRegister()方法实现针对 register()方法的验证
  3)validate()方法和 validateXxx()方法同时存在时,都会起作用
  4)validateXxx()方法的调用优于validate()方法

3. Struts2的框架验证

不管是采用上面哪两种方法,都需要手动编写校验规则。当验证规则复杂时就会导致Action类的臃肿。 可以使用Struts2框架,用户

无需编码,只要在外部配置文件中制定某个字段需要进行的验证类型,并提供出错信息即可,能够减轻开发者的负担,提高开发效率。

1) Action 类中不需要添加 validate() 或  validateXxx() 方法

2) struts.xml 文件不需要验证配置

3) JSP页面

  <s:fielderror/>
  <form action="login.action">
  <s:text name="userName"></s:text> : <s:textfield name="name" ></s:textfield> <br/>
  <s:text name="userPwd"></s:text>: <s:password name="pwd" ></s:password> <br/>
  <s:text name="submit"></s:text> : <input type="submit" />
  </form>

  

4) 在 Action 同包下创建验证文件。

验证文件的命名规则: ClassName-validation.xml 或者 ClassName-alias-validation.xml

【文件可以查看struts的示例文件】

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">6</param>
<message>用户名长度必须在 ${minLength}和 ${maxLength}之间 </message>
</field-validator>
</field>
</validators>

requiredstring : 规定一个字符串不能为null,且不能为空字符串

stringlength: 检查一个字符串的长度范围, 可以通过minLength和maxlength两个参数指定字段的最小长度和最大程度

fieldexpression: 使用OGNL表达式来验证字段。 例如 <param name="expression" >pwd1==pwd2</param>

regex:正则表达式

4. 数据校验总结

   

struts 数据验证的更多相关文章

  1. Struts数据验证

    Action类继承了ActionSupport类,而该类实现了Action.Validateable.ValidationAware.TextProvider.LocaleProvider和Seria ...

  2. Struts数据效验

    表单数据的验证: 前台验证:主要是通过JS验证, 表达数据是否合法! 后台验证:通过后台java代码进行验证! Struts也提供了数据效验的方式! Struts数据效验, 通过拦截器完成: < ...

  3. Java实战之01Struts2-03属性封装、类型转换、数据验证

    九.封装请求正文到对象中 1.静态参数封装 在struts.xml配置文件中,给动作类注入值.调用的是setter方法. 原因:是由一个staticParams的拦截器完成注入的. 2.动态参数封装: ...

  4. Struts2(二)之封装请求正文、数据类型转换、数据验证

    一.封装请求正文到对象中(重点) 1.1.静态参数封装 在struts.xml文件中,给动作类注入值,使用的是setter方法 1.2.动态参数封装 通过用户表单封装请求正文参数 1.2.1.动作类作 ...

  5. struts2(三)---struts2中的服务端数据验证框架validate

    struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...

  6. strut2 的数据验证

    数据验证 用户的输入验证,必须做,且工作量巨大. 1.验证的方式 客户端验证:javascript 服务端验证:逻辑验证(我们的代码) 注意:如果客户端和服务端二选一的话,服务器端的不能省. 实际开发 ...

  7. 学习Struts--Chap06:Struts2之数据验证

    1.数据验证的概述 1.1.数据验证的重要性 数据验证是非常必要的,不但和我们的常识性理解有关系,还有可能涉及到一些非法输入等问题,所以我们需要进行必要的数据验证,以保证我们在数据输入的时候都是正确且 ...

  8. Struts2数据验证机制

    1. 手动验证的实现 只需要在继承ActionSupport类的情况下,直接重写validate()方法即可.使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是 ...

  9. 01_11_Strtus2简单数据验证

    01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ...

随机推荐

  1. Jquery Ajax方法传值到action

    假设cshtml文件中是这样的: <script type="text/javascript"> $(document).ready(function(){ $(&qu ...

  2. linux vi 删除多行的方法

    dd 删除一行 d$ 删除以当前字符开始的一行字符 ndd 删除以当前行开始的n行 dw 删除以当前字符开始的一个字 ndw 删除以当前字符开始的n个字 D 与d$同义 d) 删除到下一句的开始 d} ...

  3. 在XP下安装PHP

    最近,有许多朋友问我在WindowsXp下PHP的安装过程,正好最近我在自己的机器上成功的以模块化的方式安装了PHP4.23.既然这么多朋友需要,我就以最常见的IIS和Apache服务器为例,把PHP ...

  4. GitLab安装手记

    阿里云1G内存20G硬盘 1.首先下载GitLab Deb包(官网附有apt-get安装方式,但国内环境貌似不成功): https://about.gitlab.com/downloads/ 2. d ...

  5. Spark cache 和 persist

    1)RDD的cache()方法其实调用的就是persist方法,缓存策略均为MEMORY_ONLY:2)可以通过persist方法手工设定StorageLevel来满足工程需要的存储级别:3)cach ...

  6. 禁止浏览器直接访问php文件

    框架中很多php文件并不是用来如果熟悉框架的路径就能直接访问这个文件,虽然访问到了也不能看到什么(他看到的是编译过后的html文件),但还是觉的很不安全. 可以通过下面这种方法拒绝他人的从浏览器中的访 ...

  7. zk FileUpload(文件上传)

    <button label="上传 Image" upload="true,maxsize=1073741824"> <attribute n ...

  8. Git分布式项目管理 入门到学会

    Git简介 Git是什么? Git和SVN一样都是一种高效的管理代码的系统. Git是目前世界上最先进的分布式版本控制系统(没有之一). 创建版本库 什么是版本库呢?版本库又名仓库,英文名reposi ...

  9. window svn backup.bat

    help command /? call /? %cd% 可以用在批处理文件中,也可以用在命令行中:展开后,是驱动器盘符:+当前目录,如在dos窗口中进入c:\dir目录下面, %0代指批处理文件自身 ...

  10. Go 语言学习

    golang中国 http://www.golangtc.com/ 第三方github学习 https://github.com/Unknwon/go-fundamental-programmingh ...