通过struts2中延续自xwork框架的validation.xml配置方式进行数据校验,因struts2 下存在三种请求参数的注入方式,固按照不同注入方式对validation.xml的配置进行总结。

一、Action类下直接参数的校验配置:

  • web.xml文件配置struts过滤器:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

View Code

  • bean文件:因直接在action类下进行注入及验证,不涉及bean文件,固略;
  • RegistServiceDao文件存储注册业务逻辑,略;
  • Action文件:

package com.actionpublic class RegAction extends ActionSupport{private String name;private String password;private String gender;private String email;private String address;private User userInfo;//setter和getter方法略;public User setInfo(){User info = new User();info.setname(this.name);info.setpassword(this.password);info.setgender(this.gender);info.setemail(this.email);info.setaddress(this.address);return info;}public String regist(){RegistServiceDao rsd = new RegistServiceDao();userInfo = setInfo();if(rsd.regist(usrInfo)){return "success";}else{return "input";}}
}

View Code

  • struts配置文件配置action:

<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="default" extends="struts-defualt"><action name="regist" class="com.action.RegistAction"><result name="success">success.jsp</result><result name="INPUT">regist.jsp</result></action></package>
</struts>

View Code

****

  • validation.xml文件配置校验器,命名规则为<ActionClassName>-<aliasName>-validation.xml,文件必须放在action文件的同目录下;  

  RegActoin-regiest-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC   "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><feild name="name"><feild-validator type="requiredString"><message>用户名不能为空</message></feild-validator></feild><feild name="password"><feild-validator type="requiredString"><message>密码不能为空</message></feild-validator></feild><feild name="gender"><feild-validator type="requiredString"><message>性别不能为空</message></feild-validator></feild><feild name="email"><feild-validator type="email"><message>油箱格式不正确</message></feild-validator></feild></validators>

View Code

二、DomainModel的注入方式下的数据校验:

  • web.xml配置文件无变化,同第一种;
  • bean文件,包含setter和getter的完整bean文件:

package com.entitypublic class User{private String name;private String password;private String gender;private String email;private String address;public User(){}public User(String name,String password,String gender,String email,String address){this.name = name;this.password = password;this.gender = gender;this.email = email;this.address = address;}//setter和getter方法略
}

View Code

  • RegistServiceDao文件存储注册业务逻辑,略;
  • Action文件,利用User对象注入数据,添加user的getter和setter方法,同时调用字段值时亦通过对象(user.getName()):

package com.actionpublic class RegAction extends ActionSupport{//无需实例化Userprivate User user;public User getUser(){return user;}public void setUser(User user){this.user = user;}public String regist(){RegistServiceDao rsd = new RegistServiceDao();if(rsd.regist(user)){return "success";}else{return "input";}}
}

View Code

  • struts配置文件配置Action,同第一种;

********

  • validation.xml文件配置配置校验器,校验user对象的字段需通过visitor校验器,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC   "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><field name="user"><field-validator type="visitor"><param name="context">abc</param><param name="appendPrefix">true</param></field-validator></field>
</validators>

View Code

  • User-abc-validation.xml文件配置visitor校验,命名规则为类似Action的校验配置文件,文件位置亦必须与实体类同一目录下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC   "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"><validators><feild name="name"><feild-validator type="requiredString"><message>用户名不能为空</message></feild-validator></feild><feild name="password"><feild-validator type="requiredString"><message>密码不能为空</message></feild-validator></feild><feild name="gender"><feild-validator type="requiredString"><message>性别不能为空</message></feild-validator></feild><feild name="email"><feild-validator type="email"><message>油箱格式不正确</message></feild-validator></feild></validators>

View Code

!!

  • jsp文件改动,因DomainModel下的注入方式,对参数设定的字段名称需要加对象实例的前缀(user.name):

<s:form action = "regist" method = "post"><s:textfield name="user.name" label="用户名"/><s:password name="user.password" label="密码"/><s:texfield name="user.gender" label="性别"/><s:texfield name="user.email" label="油箱"/><s:texfield name="user.address" label="地址"/><s:submit/>
</s:form>

View Code

三、ModelDriven注入下的数据校验,与域模型相比,主要是Action及jsp注入参数发生变化,同时需要对visitor校验器参数进行调整:

  • web.xml配置文件无变化;
  • bean文件无变化;
  • RegServiceDao文件无变化;
  • Action文件,需做以下修改:
    • 声明ModelDriven接口(泛型接口);
    • 需要声明getModel方法,同时对User类进行实例化;
    • 无需添加bean对象的getter和setter方法;

package com.actionpublic class RegAction extends ActionSupport implements ModelDriven<User>{//无需实例化Userprivate User user;public User getModel(){if(user!=null){return user;}else{user = new User();return user;}}public String regist(){RegistServiceDao rsd = new RegistServiceDao();if(rsd.regist(user)){return "success";}else{return "input";}}
}

View Code

  • struts文件配置Action无变化;

********

  • validation.xml文件配置校验器,同第二种,使用visitor校验器,需要修改如下两个参数:

    • field标签的name属性为:model;
    • field下param标签的name为"appendPrefix" 属性的值修改为false(字段不再需要添加bean对象前缀);
  • User-abc-validation.xml配置校验器无变化;

!!

  • jsp页面需做简单修改,接收参数不需添加bean对象前缀

<s:form action = "regist" method = "post"><s:textfield name="name" label="用户名"/><s:password name="password" label="密码"/><s:texfield name="gender" label="性别"/><s:texfield name="email" label="油箱"/><s:texfield name="address" label="地址"/><s:submit/>
</s:form>

View Code

转载于:https://www.cnblogs.com/caden1225/p/5990977.html

struts2 数据校验相关推荐

  1. 深入分析JavaWeb Item46 -- Struts2数据校验与国际化

    1.用户输入数据的校验 1.校验方式 a:客户端校验.(防君子防不了小人)在页面中写js脚本. 这样做的好处是: 输入错误的话提醒比较及时: 减轻服务器的压力 b.服务器端校验. 数据安全 ,整个应用 ...

  2. Struts2 类型转换和数据校验

    学习内容 Struts 2类型转换 Struts 2数据校验 能力目标 熟悉Struts 2自带类型转换器 能自定义类型转换器 自定义输入校验功能 熟悉Struts 2内置校验器 本章简介 Strut ...

  3. struts2之token,类型转换和数据校验

    文章目录 1 Token防重 1.1 token内部原理 1.2 实现步骤 1.2.1 在页面中添加标签 1.2.2 配置strtus.xml配置 2 类型转换器 2.1 Struts2类型转换 2. ...

  4. Struts2输入校验之validate输入校验方式

    一.在Web系统项目中有大量的视图页面需要用户自行输入很多数据.这些数据的类型有很多种.为了防止某些客户的恶意输入以及对Web项目的恶意破坏,必须引入输入校验,像Windows操作系统的防火墙一样把一 ...

  5. 07-struts2提供的数据校验

    关于struts2提供的数据校验 在开发中,请求参数是需要校验的. 客户端校验---->js 服务器校验---->java代码. struts2中提供的校验-----服务器端校验. 分成两 ...

  6. springmvc(四) springmvc的数据校验的实现

    so easy~ --WH 一.什么是数据校验? 这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验. 数据校验分为客户端 ...

  7. c语言实现java接口_五分钟带你了解Java是如何从容而优雅地实现接口数据校验

    本篇文章给大家分享平时开发中总结的一点小技巧!在工作中写过Java程序的朋友都知道,目前使用Java开发服务最主流的方式就是通过Spring MVC定义一个Controller层接口,并将接口请求或返 ...

  8. Maatkit工具使用lt;一gt;之mysql主从数据校验工具

    mysql主从数据校验工具       mysql在5.1之前,其replication都是采用的STATEMENT模式,对表的数据是否一致要求并不严格,所以对数据一致性要求比较严格的应用,定期检查数 ...

  9. Go 语言编程 — validator 数据校验工具

    目录 文章目录 目录 Validator Quick start 约束类型 特殊约束 格式约束 数据结构类型约束 范围约束 字符串约束 唯一性约束 跨字段约束 自定义约束 错误处理 中文错误信息 参考 ...

最新文章

  1. C++中对象的构造顺序和析构顺序
  2. python吃内存还是cpu_Python2 得到 CPU 和内存信息要怎么实现呢?
  3. 完美国际真数苹果_如果给你推荐一款很贵,但好用的苹果手机壳,你会买吗?...
  4. dojo.declare
  5. DNS中A记录和CNAME的区别 什么是CNAME
  6. Android地图轨迹抽稀、动态绘制
  7. ubuntu18之wine
  8. Python量化交易平台开发教程系列7-顶层GUI界面开发(1)
  9. 我的世界服务器无限刷雪傀儡,《我的世界》四个刷怪技巧,雪傀儡的雪球用来对付烈焰人有奇效?...
  10. python四舍五入round_Python四舍五入及round、Decimal使用
  11. 备受全球瞩目的「USDT集体索赔案」来龙去脉|全文译本
  12. 浅谈蓝牙的多时隙分组
  13. 计算机网络基础知识点快速复习手册
  14. 软件开发人员的作战手册 - 让程序员活的久一点
  15. 【2016年总结】-- 你若盛开,清风自来
  16. IDA Linux远程调试
  17. android 截屏函数_android截屏功能实现代码
  18. 浏览器缓存机制的理解
  19. android 多用户卸载,多用户方案实现Android免ROOT卸载预装软件的思路
  20. 90后的我们,独自漂泊在上海

热门文章

  1. java 中的惰性初始化_java惰性初始化
  2. [转载]般若波罗蜜多心经
  3. python中的numpy标准正态分布_Numpy创建正态分布和均匀分布
  4. [Java]Spring Ioc讲解,不怕你不懂
  5. 【微信小程序】创建项目
  6. 关于hadoop安装中nodemanager启动失败的原因
  7. 中医药大学计算机考试题,浙江中医药大学2013年级研究生《计算机应用》期末考试复习题...
  8. 北京中医药大学计算机应用基础作业1,北京中医药大学远程教育“计算机应用基础”第5次作业.doc...
  9. iPhone8 和 iPhoneX 买哪个?听我的
  10. V2.0 版本的 《JavaGuide面试突击版》来啦!带着它的在线阅读版本来啦!