快云助手网站建设视频教程,wordpress添加代码,网页上的视频如何下载,微信二维码在线制作文章目录简介使用校验器步骤演示案例常用校验器requiredrequiredstringstringlengthregexintdoublefieldexpressionemailurldateconversionvisitorexpression参考简介
Struts2 的校验器是在后端对前端提交的数据进行校验#xff0c;在调用 Action 的指定方法前会先调用校验器…
文章目录简介使用校验器步骤演示案例常用校验器requiredrequiredstringstringlengthregexintdoublefieldexpressionemailurldateconversionvisitorexpression参考简介
Struts2 的校验器是在后端对前端提交的数据进行校验在调用 Action 的指定方法前会先调用校验器的有关方法校验通过才会调用 Action 指定的方法校验不通过则会调用 Action 的方法 input()该方法返回字符串“input”。
校验不通过会将有关的提示信息存储到 Action 对象中的成员变量 validationAware 中这个成员变量继承自 ActionSupport然后再调用 Action 的方法 input()这个方法继承自 ActionSupport该方法返回字符串“input”。
控制器再将请求转发给名为“input”的 JSP 页面。
使用校验器步骤
1.先写前端页面 JSP
写页面时要确定哪些字段的数据需要校验在需要校验的字段旁边添加标签 s:fielderror/如下所示 trtd邮箱:/tdtdinput typetext nameemail//td%--使用s:fielderror/标签输出对应字段的错误信息属性fieldName指定出现错误信息的字段名称--%tds:fielderror fieldNameemail//td
/tr2.写 Action
Action 的属性名称要和前端页面的字段名称保持一致。自定义的 Action 必须继承自 ActionSupport。
3.struts.xml 对 Action 配置 action nameregister classpriv.lwx.struts2.validator.web.RegisterActionresult namesuccesssuccess.jsp/result!--校验失败后struts2会把页面转到名为input的页面中--result nameinputregister.jsp/result
/action4.创建校验器配置文件
首先确定调用哪个 Action 需要校验请求参数的数据。
例如调用名称为 register 的 Action 需要校验页面表单项的数据那么就需要在 Action 所在的包目录下创建一个校验器配置文件并且该配置文件的取名规则为Action 类的名称-Action 的名称-validation.xml
Action 的名称struts.xml 文件中标签 action/ 的属性 name 的值
例如下面的 action
action nameregister classpriv.lwx.struts2.validator.web.RegisterActionresult namesuccesssuccess.jsp/result!--校验失败后struts2会把页面转到名为input的页面中--result nameinputregister.jsp/result
/action访问 register需要校验表单数据那么就可以创建名为 RegisterAction-register-validation.xml 的配置文件。并将该配置文件存放在 RegisterAction 所在的包目录下。Maven 项目在开发时只能将配置文件存放在目录 resources 下因此需要将该配置文件存放在目录 resources 中相对应的包目录下所以你要先在目录 resources 目录下创建和 RegisterAction 的包目录结构相同的目录再将配置文件存放在对应的包目录下如下图所示
如果配置文件命名为 RegisterAction-validation.xml则只要访问类 RegisterAction 就会去调用校验器。
校验器调用顺序 按下面的顺序加载解析校验器配置文件调用相应的校验器。 先加载 action类名-validation.xml然后加载 action类名-name属性值-validation.xml 文件。
5.校验器配置
先指定被校验的字段再指定校验器。谁被校验由谁来校验这是【字段 → 校验器】配置风格
例如 !-- 属性name指定被校验的字段名称这里对字段email进行校验 --field nameemail!-- 属性type指定校验器名requiredstring非空字符串校验器 --field-validator typerequiredstring!--校验不通过标签message/中的文本会作为标签s:fielderror/所输出的HTML标签的文本显示在页面中--message邮箱不能为空/message/field-validator!-- 一个字段可以配置多个校验器email邮箱格式校验器 --field-validator typeemailmessage邮箱格式不正确/message/field-validator/field先指定校验器再指定被校验的字段。由谁来校验来校验谁这是【校验器 → 字段】配置风格。
例如
validator type校验器名param namefieldName需要被校验的字段/paramparam name参数名参数值/param!--校验不通过在页面显示的提示信息 --message提示信息/message
/validator演示案例
项目结构图如下
register.jsp的代码如下
% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %
%--引用struts2标签库--%
% taglib uri/struts-tags prefixs %
!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd
html
heads:head/meta http-equivContent-Type contenttext/html; charsetUTF-8title注册/title
/head
body
form actionregister1.action methodposttabletrtd邮箱:/tdtdinput typetext nameemail//td%--使用s:fielderror/标签输出对应字段的错误信息属性fieldName指定出现错误信息的字段名称--%tds:fielderror fieldNameemail//td/trtrtd密码:/tdtdinput typepassword namepassword//tdtds:fielderror fieldNamepassword//td/trtrtd重复密码:/tdtdinput typepassword namerepassword//tdtds:fielderror fieldNamerepassword//td/trtrtd电话:/tdtdinput typetext namephone//tdtds:fielderror fieldNamephone//td/trtrtdinput typesubmit value提交//tdtd/tdtd/td/tr/table
/form
/body
/htmlsuccess.jsp的代码如下
% page languagejava contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %
!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd
html
headmeta http-equivContent-Type contenttext/html; charsetUTF-8title注册成功/title
/head
body
欢迎你 ${email}
/body
/htmlRegisterAction 的代码如下
package priv.lwx.struts2.validator.web;import com.opensymphony.xwork2.ActionSupport;/*** description** author liaowenxiong* date 2022/5/31 18:43*/public class RegisterAction extends ActionSupport {// 页面中需要校验的字段必须和Action的属性一一对应private String email;private String password;private String repassword;private String phone;public String execute() throws Exception {return SUCCESS;}public String getEmail() {return email;}public void setEmail(String email) {this.email email;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getRepassword() {return repassword;}public void setRepassword(String repassword) {this.repassword repassword;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone phone;}
}struts.xml 的配置如下
?xml version1.0 encodingUTF-8 ?
!DOCTYPE struts PUBLIC-//Apache Software Foundation//DTD Struts Configuration 2.3//ENhttp://struts.apache.org/dtds/struts-2.3.dtdstrutsconstant namestruts.i18n.encoding valueUTF-8/package namedefault namespace/ extendsstruts-default!-- http://localhost:8080/sv/register.jsp --action nameregister classpriv.lwx.struts2.validator.web.RegisterActionresult namesuccesssuccess.jsp/result!--校验失败后struts2会把页面转到名为input的页面中--result nameinputregister.jsp/result/action/package
/strutsRegisterAction-validation.xml 的代码如下
?xml version1.0 encodingUTF-8?
!DOCTYPE validators PUBLIC-//Apache Struts//XWork Validator 1.0.2//ENhttp://struts.apache.org/dtds/xwork-validator-1.0.2.dtd
!--配置校验器--
validators!-- 属性name指定被校验的字段名称这里对字段email进行校验 --field nameemail!-- 属性type指定校验器名requiredstring非空字符串校验器 --field-validator typerequiredstring!--校验不通过标签message/中的文本会作为标签s:fielderror/所输出的HTML标签的文本显示在页面中--message邮箱不能为空/message/field-validator!-- 一个字段可以配置多个校验器email邮箱格式校验器 --field-validator typeemailmessage邮箱格式不正确/message/field-validator/fieldfield namepasswordfield-validator typerequiredstringmessage密码不能为空/message/field-validator!-- stringlength字符串长度校验器 --field-validator typestringlength!-- 通过校验器参数来添加和设置校验规则minlength最小长度 --param nameminLength6/parammessage密码长度不能少于6位/message/field-validator/field!-- 校验两次密码是否一致使用fieldexpression校验器。expression参数指定判断用的表达式--field namerepasswordfield-validator typefieldexpression!-- 表达式要写在![CDATA[]]内 --param nameexpression![CDATA[repasswordpassword]]/parammessage两次密码不一至/message/field-validator/field!-- 校验电话格式使用regex正则表达式校验器regexExpression参数指定正则表达式 --field namephonefield-validator typeregex!-- 注意2.3.15前的版本使用expression参数 --param nameregexExpression![CDATA[\d{11}]]/parammessage电话号码格式不正确/message/field-validator/field
/validators常用校验器
Struts2 提供了大量的内置校验器你可以在 xwork-core-2.1.6.jar 的 com.opensymphony.xwork2.validator.validators 下的 default.xml 中查看所有的内置校验器。
required
必填校验器要求field的值不能为null。
requiredstring
必填字符串校验器要求field的值不能为null并且长度大于0
参数说明trim指定在校验字符串长度之前是否去除字符串前后的空格。
stringlength
字符串长度校验器要求field的值的长度必须在指定的范围内否则校验不通过。
参数说明minLength指定最小长度。maxLength指定量大长度。trim指定在校验字符串长度之前是否去除字符串前后的空格。
regex
正则表达式校验器校验field的值是否与指定的正则表达式相匹配。
参数说明expression指定正则表达式2.3.15版用regexExpression。caseSensitive指定进行正则表达式匹配时是否区分大小写。
int
整数校验器要求field的值必须是整型数值且数值必须在指定的范围内。
参数说明min指定最小值。max指定最大值。
double
双精度浮点数校验器要求field的值必须是double数值并且数值必须在指定范围内。
参数说明min指定最小值。max指定最大值。
fieldexpression
OGNL 表达式校验器。要求 field 的值满足一个 ognl 表达式。
参数说明expression指定ognl表达式表达式要写在 ![CDATA[]]内。
email
邮件地址校验器。如果field的值非空则必须符合邮箱地址格式的要求即必须是合法的邮箱地址
url
网址校验器。如果field的值非空则必须符合url格式的要求即必须是合法的URL地址
date
日期校验器要求field的值必须是日期类型的且日期值必须在指定范围内
参数说明min指定最小值。max指定最大值。
conversion
转换校验器指定在类型转换失败时提示错误信息。
visitor
用于校验action中的复合属性。它指定一个校验文件用于校验复合属性中的属性。
expression
OGNL表达式校验器。要求 field 满足一个ognl表达式。该校验器不可用在【字段 → 校验器】风格的配置中
参数说明expression指定ognl表达式表达式要写在 ![CDATA[]] 内。
参考
1.https://www.cnblogs.com/likailan/p/3302284.html