关于struts2提供的数据校验

在开发中,请求参数是需要校验的。
客户端校验---->js
服务器校验---->java代码。

struts2中提供的校验-----服务器端校验。

分成两种:
1.手动校验(编码校验)
2.配置校验(annotation,xml) 我们讲的是xml。

1.手动校验:(了解)

要求:action类必须继承自ActionSupport。需要重写一个方法 validate

通过测试发现在action中重写的validate方法执行了。并且是在请求处理方法(execute)之前执行的。

1.action中

package cn.itcast.action;import cn.itcast.domain.User;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;public class LoginAction extends ActionSupport implements ModelDriven<User> {private User user  = new User();//action类必须继承自ActionSupport。需要重写一个方法 validate
    @Overridepublic void validate() {// TODO Auto-generated method stubif(user.getUsername() == null || user.getUsername().length()==0 || "".equals(user.getUsername())) {//存储校验错误信息this.addFieldError("username_error", "用户名不能为空");}}@Overridepublic String execute() throws Exception {// TODO Auto-generated method stubSystem.out.println("execute..");return "success";}@Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;}}

2.jsp中页面上怎样获取错误信息

<s:fielderror></s:fielderror><form action="${pageContext.request.contextPath}/login" method="post">用户名:<input type="text" name="username"><br>密码<input type="password" name="password"><br>生日<input type="text" name="birthday"><br><input type="submit" value="登录"></form>

对于struts2提供的校验,它也是通过拦截器实现的。

问题:在validate方法中怎样存储校验错误信息?

在validate方法中 this.addFieldError(Sting name,String value);

问题:在页面上怎样获取错误信息?(在input视图上)
<s:fielderror> 展示所有错误信息

<s:fielderror fieldName="">展示特定名称的错误信息.

问题:在同一个Action中有多个请求处理方法(login,regist)那么有些方法是需要校验的,有些是不需要的,怎样处理?
解决方案:创建一个名称叫 validate+请求处理方法名 例如:请求处理方法叫 regist() 校验 的方法名 validateRegist().

2.配置校验(xml)

struts2的校验框架。
已经完成了校验操作(做了很多校验方法)。
而我们在使用时,只需要将它们调用就可以(通过配置文件)

要求:action类必须继承自ActionSupport。

问题:配置文件怎样配置?

  • 位置:xml文件要与action类在同一个包下
  • 名称:action类名-validation.xml
  • 约束: xwork-core-2.3.7.jar 中 xwork-validator-1.0.3.dtd 下

<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

  • 书写:

1.根元素
<validators>
2.子元素
<field name="属性名称"></field>

3.<field>子元素
<field-validator type="校验器"> 这个是指定校验器
问题:校验器有哪些?
xwork-core-2.3.7.jar 中 /com/opensymphony/xwork2/validator/validators/default.xml下

<validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
<validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
<validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
<validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
<validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
<validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>

4.<field-validator>子元素
<message>错误信息</message>

5.<field-validator>子元素
<param name="">值</param>
用于指定校验器中的参数.

1.jsp中

              

<s:fielderror></s:fielderror><form action="${pageContext.request.contextPath}/login" method="post">用户名:<input type="text" name="username"><br>密码<input type="password" name="password"><br><input type="submit" value="登录"></form>

2.配置的xml文件内容

            

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators><field name="username"><field-validator type="requiredstring"><message>用户名不能为空</message></field-validator><field-validator type="stringlength"><param name="minLength">3</param><param name="maxLength">8</param><message>用户名只能在${minLength}到${maxLength}之间</message></field-validator></field>
</validators>

介绍:关于配置校验中的校验器:

* required (必填校验器,要求被校验的属性值不能为null)
* requiredstring (必填字符串校验器,要求被校验的属性值不能为null,并且长度大于0,默认情况下会对字符串去前后空格)
* stringlength (字符串长度校验器,要求被校验的属性值必须在指定的范围内,否则校验失败,minLength参数指定最小长度,maxLength参数指定最大长度,trim参数指定校验field之前是否去除字符串前后的空格)
* regex (正则表达式校验器,检查被校验的属性值是否匹配一个正则表达式,expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true)
* int(整数校验器,要求field的整数值必须在指定范围内,min指定最小值,max指定最大值)
* double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)
* fieldexpression (字段OGNL表达式校验器,要求field满足一个ognl表达式,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过)
* email(邮件地址校验器,要求如果被校验的属性值非空,则必须是合法的邮件地址)
* url(网址校验器,要求如果被校验的属性值非空,则必须是合法的url地址)
* date(日期校验器,要求field的日期值必须在指定范围内,min指定最小值,max指定最大值)

-------------------------------------------------------------------------------------------

问题:通过配置校验,怎样处理在同一个action中存在多个请求处理方法校验问题?

只需要将校验xml文件名称修改就可以。
action类名-valication.xml 现在要对action类中某一个方法校验。

action类名-action名称-validation.xml.

转载于:https://www.cnblogs.com/1963942081zzx/p/6488718.html

07-struts2提供的数据校验相关推荐

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

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

  2. Struts2学习 表单校验——XML校验规则文件

    一.前言 表单输入校验是所有Web应用所必备的功能.表单输入校验分可以为客户端校验和服务器端校验.客户端校验一般使用javascript脚本实现,可以有效的进行数据校验,防止非法输入,可以减轻服务器压 ...

  3. Spring MVC(4):数据校验

    Spring MVC数据校验 一般来说,准许开发中的 DRY 原则,对于Java程序中的数据校验逻辑和相应的域模型会进行绑定,将代码逻辑集中管理: Spring 在使用DataBinder 对数据进行 ...

  4. Validated数据校验,看这一篇就够了

    目录 1 介绍 1.1 什么是数据校验 1.2 Java提供的数据校验工具 1.3 @Validated和@Valid的区别 1.4 依赖导入 1.5 常用数据校验注解 2 使用 2.1 校验实体类 ...

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

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

  6. struts2 数据校验

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

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

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

  8. 魔方APP项目-07-客户端提交登录信息、在APICloud中集成防水墙验证码,前端获取显示并校验验证码、服务端校验验证码、保存用户登录状态,APICloud提供的数据存储、客户端保存用户登陆数据

    用户登录 一.客户端提交登录信息 html/login.html,代码: <!DOCTYPE html> <html> <head><title>登录& ...

  9. Struts2请求参数合法性校验机制

    在Action中通过代码执行数据校验 请求参数的输入校验途径一般分两种:客户端校验 :通过JavaScript 完成 (jquery validation插件),目的:过滤正常用户的误操作. 服务器校 ...

最新文章

  1. 解决 Could not autowire. No beans of ‘UserDao‘ type found 问题
  2. liun5实现DHCP地址分配笔记
  3. 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突
  4. 2021 亚马逊云科技中国峰会,对话《容器混合云会是未来的答案吗》
  5. 学python可以干嘛-学习Python可以做什么
  6. CCNA配置试验之七 PPP中PAP和CHAP的验证
  7. 使用 Eclipse 建立包的时候,“name”下可选项“Create package-info.java”的作用是什么?
  8. 夯实基础,彻底掌握js的核心技术(三):堆栈内存及闭包详解
  9. pycharm vim 插件IdeaVIM
  10. SpringBoot实战(八):集成Swagger
  11. Android中的动画详解系列【2】——飞舞的蝴蝶
  12. 流式上传文件到服务器磁盘,在ASP.NET中流式传输大文件上传
  13. dynamix判定_Dynamix
  14. AI人工智能专业词汇集
  15. JavaScript 中 typeof 和 instanceof 的区别及如何判断数组
  16. 树莓派 python驱动蜂鸣器
  17. C++的重载(overload)与重写(override)
  18. 【微信小程序】video视频组件问题
  19. 【qstock量化】数据篇之宏观指标和财经新闻文本
  20. Ubuntu怎么知道去哪找安装软件?

热门文章

  1. 几种常用设计模式的简单示例
  2. c 中html抓取页面图片,【教程】抓取网并提取网页中所需要的信息 之 C#版
  3. JavaScript创建对象:深入理解编程原理
  4. catch所有提示的异常类型,程序执行异常时却还是没有报错,异常没有被catch到吗[已解决]
  5. java io类型_Java NIO之Java中的IO分类
  6. 2021-08-26 转载 Scala快速入门系列博客文章
  7. java引用型变量_java-有没有办法用类型变量引用当前类型?
  8. MySql数据导入导出及解决ERROR2006(MySQL server has gone away)错误
  9. wamp 403 禁止访问
  10. 湖南2021年高考成绩查询与录取查询课件,@所有高考生,高考成绩和录取动态查询方式公布...