Struts数据验证
Action类继承了ActionSupport类,而该类实现了Action、Validateable、ValidationAware、TextProvider、LocaleProvider和Seriazbale接口。而其中Validatteable 接口定义了一个validateable()方法,只要在用户的Action中重写该方法就可以实现验证功能。
/**
*会在执行execute之前执行,对传入的数据进行检验
*/
@Override
public void validate() {
// 如果用户名为空,就把错误信息添加到Action 类的 fieldError
if (user.getUsername()==null||user.getUsername().trim().equals("")) {
addFieldError("user.username", "用户名必须填!");
}
}
在类中定义了校验方法后,该方法会在执行系统的execute()方法执行之前执行,如果执行该方法之后Action类的fieldError中已将包含了数据校验错误信息,将把请求转发到input视图处。
<action name="StrutsDemo1" class="cn.itcast.struts2.action.StrutsDemo1">
<!-- 配置结果页面的跳转 在Action 中根据不同的返回值配置不同的跳转页面 -->
<result name="success">/demo1/main.jsp</result>
<result name="input">login.jsp</result>
</action>
会在登录界面显示错误信息。
struts2提供了校验框架,只需要增加一个校验配置文件就可以完成对数据的校验。
命名格式:ActionName-validation.xml 其中ActionName就是需要校验的用户自定义的Action类的类名 ,且该文件应与Action位于同一路径,如果Action类中有多个方法,对应的struts.xml文件中就有多个Action配置,这时如果想对其中一个方法进行验证,命名应该为ActionName-name-calidation.xml,这里的name是在struts.xml中的Action属性里面的name。
<?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="user.username">
<!-- 验证字符串不能为空 ,选项必填-->
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<!-- 错误提示信息 -->
<message>用户名必填</message>
</field-validator>
</field>
</validators>
其他整数校验器:
<!-- 验证字符串不能为空 ,选项必填-->
<field-validator type="requiredstring">
<!-- 去空格 -->
<param name="trim">true</param>
<!-- 错误提示信息 -->
<message>用户名必填</message>
</field-validator> <!-- 整数大小校验器 -->
<field-validator type="int">
<param name="min">18</param>
<param name="max">100</param>
<message>必须在18和100之间</message>
</field-validator> <!-- 日期校验器 -->
<field-validator type="date">
<param name="min">1990-01-01</param>
<param name="max">2017-01-01</param>
<message>日期必须在1990-01-01到2017-01-01之间</message>
</field-validator> <!-- 邮件地址校验器 -->
<field-validator type="email">
<message>必须是有效的email地址</message>
</field-validator> <!-- 网址地址校验器 -->
<field-validator type="url">
<message>必须输入有效的网址</message>
</field-validator> <!-- 字符串长度校验器 -->
<field-validator type="stringlength">
<param name="minlength">6</param>
<param name="maxlength">20</param>
<message>字符长度必须在6到20之内</message>
</field-validator> <!-- 正则表达式校验器 -->
<field-validator type="regex">
<param name="expression"><![CDATA[(\d{6})]]></param>
<message>必须是6位的数字</message>
</field-validator>
Struts数据验证的更多相关文章
- struts 数据验证
1. validate()验证 将对页面表单验证的内容写到validate()方法中,实现验证和业务处理内容的分离 在Action中添加 validate()方法 public void vali ...
- Struts数据效验
表单数据的验证: 前台验证:主要是通过JS验证, 表达数据是否合法! 后台验证:通过后台java代码进行验证! Struts也提供了数据效验的方式! Struts数据效验, 通过拦截器完成: < ...
- Java实战之01Struts2-03属性封装、类型转换、数据验证
九.封装请求正文到对象中 1.静态参数封装 在struts.xml配置文件中,给动作类注入值.调用的是setter方法. 原因:是由一个staticParams的拦截器完成注入的. 2.动态参数封装: ...
- Struts2(二)之封装请求正文、数据类型转换、数据验证
一.封装请求正文到对象中(重点) 1.1.静态参数封装 在struts.xml文件中,给动作类注入值,使用的是setter方法 1.2.动态参数封装 通过用户表单封装请求正文参数 1.2.1.动作类作 ...
- struts2(三)---struts2中的服务端数据验证框架validate
struts2为我们提供了一个很好的数据验证框架–validate,该框架可以很方便的实现服务端的数据验证. ActionSupport类提供了一个validate()方法,当我们需要在某一个acti ...
- strut2 的数据验证
数据验证 用户的输入验证,必须做,且工作量巨大. 1.验证的方式 客户端验证:javascript 服务端验证:逻辑验证(我们的代码) 注意:如果客户端和服务端二选一的话,服务器端的不能省. 实际开发 ...
- 学习Struts--Chap06:Struts2之数据验证
1.数据验证的概述 1.1.数据验证的重要性 数据验证是非常必要的,不但和我们的常识性理解有关系,还有可能涉及到一些非法输入等问题,所以我们需要进行必要的数据验证,以保证我们在数据输入的时候都是正确且 ...
- Struts2数据验证机制
1. 手动验证的实现 只需要在继承ActionSupport类的情况下,直接重写validate()方法即可.使用validate()方法可以对用户请求的多个Action方法进行验证,但其验证的逻辑是 ...
- 01_11_Strtus2简单数据验证
01_11_Strtus2简单数据验证 1. 引入struts标签 <%@taglib uri="/struts-tags" prefix="s" %&g ...
随机推荐
- baidu让用户更快看到首页
//让用户更快看到首页 if(!location.hash.match(/[^a-zA-Z0-9]wd=/)) { document.getElementById("wrapper" ...
- js正则表达式,只允许输入纯数字或‘/’
//输入框,限数字和/----需要多个数量询价,请以/分隔 function onlyonce(obj) {//先把非数字的都替换掉,除了数字和.obj.value = obj.value.repla ...
- Python列表、元组、字典、集合的内置使用方法
列表: 是一种可以存储多个值得数据容器 内容是有序的 可以存储任何数据类型 可以存储重复的元素 是可变类型(当内容发生变化时id不变) 元组: 也是一种可以存储多个值得数据容器 元组中的元素不可以被修 ...
- js 技巧 (六)JavaScript[对象.属性]集锦
JavaScript[对象.属性]集锦 SCRIPT 标记 用于包含javascript代码. 语法 属性 LANGUAGE 定义脚本语言 SRC 定义一个URL用以指定以.JS结尾的文件 windo ...
- 用LAMP构架创建DISCUZ论坛
# rpm -q httpd mariadb mariadb-server php php-mysql # yum -y install httpd mariadb-server php php-my ...
- winform ComboBox/TextBox自动提示
ComboBox和TextBox控件都带有自动前缀匹配,只要设置其中的AutoCompleteMode,AutoCompleteSource,AutoCompleteCustomSource三个属性的 ...
- Mac使用Aria2下载百度网盘,突破下载限速的方法教程
百度网盘目前可以说是在国内网盘环境中一枝独秀,日常使用触及在所难免,尤其是对于喜欢下载资源的朋友来说,但是一些限制让它的使用越来越难,尤其是下载速度,普通用户的下载往往远低于自己的预期,特别是对于 M ...
- 九度oj 题目1180:对称矩阵
题目1180:对称矩阵 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3092 解决:1607 题目描述: 输入一个N维矩阵,判断是否对称. 输入: 输入第一行包括一个数:N(1<= ...
- 动态规划之最长公共子序列(LCS)
在字符串S中按照其先后顺序依次取出若干个字符,并讲它们排列成一个新的字符串,这个字符串就被称为原字符串的子串 有两个字符串S1和S2,求一个最长公共子串,即求字符串 ...
- node的express框架,核心第三方模块body-parser 获取我们所有post请求传过来数据
- 安装 body-parser模块- npm install body-parser -S - 调用- let bodyParser=require('body-parser'); - 设置中间件- ...