07-struts2提供的数据校验
关于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提供的数据校验相关推荐
- Struts2 类型转换和数据校验
学习内容 Struts 2类型转换 Struts 2数据校验 能力目标 熟悉Struts 2自带类型转换器 能自定义类型转换器 自定义输入校验功能 熟悉Struts 2内置校验器 本章简介 Strut ...
- Struts2学习 表单校验——XML校验规则文件
一.前言 表单输入校验是所有Web应用所必备的功能.表单输入校验分可以为客户端校验和服务器端校验.客户端校验一般使用javascript脚本实现,可以有效的进行数据校验,防止非法输入,可以减轻服务器压 ...
- Spring MVC(4):数据校验
Spring MVC数据校验 一般来说,准许开发中的 DRY 原则,对于Java程序中的数据校验逻辑和相应的域模型会进行绑定,将代码逻辑集中管理: Spring 在使用DataBinder 对数据进行 ...
- Validated数据校验,看这一篇就够了
目录 1 介绍 1.1 什么是数据校验 1.2 Java提供的数据校验工具 1.3 @Validated和@Valid的区别 1.4 依赖导入 1.5 常用数据校验注解 2 使用 2.1 校验实体类 ...
- 深入分析JavaWeb Item46 -- Struts2数据校验与国际化
1.用户输入数据的校验 1.校验方式 a:客户端校验.(防君子防不了小人)在页面中写js脚本. 这样做的好处是: 输入错误的话提醒比较及时: 减轻服务器的压力 b.服务器端校验. 数据安全 ,整个应用 ...
- struts2 数据校验
通过struts2中延续自xwork框架的validation.xml配置方式进行数据校验,因struts2 下存在三种请求参数的注入方式,固按照不同注入方式对validation.xml的配置进行总 ...
- struts2之token,类型转换和数据校验
文章目录 1 Token防重 1.1 token内部原理 1.2 实现步骤 1.2.1 在页面中添加标签 1.2.2 配置strtus.xml配置 2 类型转换器 2.1 Struts2类型转换 2. ...
- 魔方APP项目-07-客户端提交登录信息、在APICloud中集成防水墙验证码,前端获取显示并校验验证码、服务端校验验证码、保存用户登录状态,APICloud提供的数据存储、客户端保存用户登陆数据
用户登录 一.客户端提交登录信息 html/login.html,代码: <!DOCTYPE html> <html> <head><title>登录& ...
- Struts2请求参数合法性校验机制
在Action中通过代码执行数据校验 请求参数的输入校验途径一般分两种:客户端校验 :通过JavaScript 完成 (jquery validation插件),目的:过滤正常用户的误操作. 服务器校 ...
最新文章
- 解决 Could not autowire. No beans of ‘UserDao‘ type found 问题
- liun5实现DHCP地址分配笔记
- 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突
- 2021 亚马逊云科技中国峰会,对话《容器混合云会是未来的答案吗》
- 学python可以干嘛-学习Python可以做什么
- CCNA配置试验之七 PPP中PAP和CHAP的验证
- 使用 Eclipse 建立包的时候,“name”下可选项“Create package-info.java”的作用是什么?
- 夯实基础,彻底掌握js的核心技术(三):堆栈内存及闭包详解
- pycharm vim 插件IdeaVIM
- SpringBoot实战(八):集成Swagger
- Android中的动画详解系列【2】——飞舞的蝴蝶
- 流式上传文件到服务器磁盘,在ASP.NET中流式传输大文件上传
- dynamix判定_Dynamix
- AI人工智能专业词汇集
- JavaScript 中 typeof 和 instanceof 的区别及如何判断数组
- 树莓派 python驱动蜂鸣器
- C++的重载(overload)与重写(override)
- 【微信小程序】video视频组件问题
- 【qstock量化】数据篇之宏观指标和财经新闻文本
- Ubuntu怎么知道去哪找安装软件?
热门文章
- 几种常用设计模式的简单示例
- c 中html抓取页面图片,【教程】抓取网并提取网页中所需要的信息 之 C#版
- JavaScript创建对象:深入理解编程原理
- catch所有提示的异常类型,程序执行异常时却还是没有报错,异常没有被catch到吗[已解决]
- java io类型_Java NIO之Java中的IO分类
- 2021-08-26 转载 Scala快速入门系列博客文章
- java引用型变量_java-有没有办法用类型变量引用当前类型?
- MySql数据导入导出及解决ERROR2006(MySQL server has gone away)错误
- wamp 403 禁止访问
- 湖南2021年高考成绩查询与录取查询课件,@所有高考生,高考成绩和录取动态查询方式公布...