验证框架 | 学习笔记

简介: 快速学习验证框架,介绍了验证框架系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门验证框架】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7314


验证框架

 

内容介绍:

一、struts2的验证框架

二、步骤

三、总结

 

一、struts2的验证框架

打开文档,进入 struts2的 docs 文档,找到 index.html 的文档,在 Getting Started中可选择 Tutorials 和 Guides。Tutorials 中有 Getting Started,其中有每步骤的教程。

Guides 中 Configuration(配置)、Interceptors(拦截器)、Results(结果集)、Localization(本地化)、Validation(验证。而Validation中的Refistering Validators 有很多类型。

加入 RegisterValidateAction.java 以便进行下一步操作,用验证器验证的话也需要继承 ActionSupport,在 src 下的 cn.sxt.action中建立一个相同目录的 xml 文件,即为文件规则。

所以新建一个 RegisterValidateAction-validation.xml 文件,验证规则都会有 dtd,将<IDOCTYPE validat ors PUBLIC “-//Apache Struts//XWork Validator 1.0.3//EN”以及“http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd”>进行拷贝。

其次 dtd 是可以查看的,1.0.3的根元素为<validators>,而 validators 有两种验证方式:一种为编写验证器,另外一种则为验证表达域。

首先进行 field 验证,与表单名称有关,写入<field name=”name”>,再跟上

<field- validator type=”requiredstring”></field- validator>,如果name 不是字符串则会报错。

而 int 有最小值或最大值,但字符串一般验证的为长度。

validators 中找到 default.xml 文件,在文件中定义了许多验证器,

如:

required、long 等,其定义了 param、Field 等,在 param 中 trim 表示为去除空格的作用,而在 RequiredStringValidator 中的 doTrim 根据 set 去进行设置,

所以跟上<param name=”trim”>true</param>,验证有无空格以便于去除空格,跟上<message>用户名必填</message>用来验证 param。

这时需将 RegisterAction 改为 RegisterValidateAction,进行测试,不填用户名,结果为得出不能找到 register 方法。

这时将 register 方法删除再次进行测试,消息并没有进行显示,这时加上<s:fielderror></s:fielderror>,再进行提交,用户名必填则会显示。

填写验证规则时,验证属性则写入 field,验证其他则写入其验证器,而验证长度时,找到 Stringlength,

再找到 StringLengthFieldValidator,其中可以看到 doTrim(去除空格)、最小长度、以及最大长度的属性,则跟上 <field- validator type=”stringlength”></field- validator>

使用验证框架时,则会通过案例找到配置文件,再找到验证器,再找到验证器的类来执行,再通过验证规则中的 validate 方法来执行,执行不成功则会通过 Fielderror 来进行下一步操作,

则跟上<param name=”trim”>true</param>,再跟上<param name=”maxLength”>10</param>,

再跟上<param name=”minLength”>4</param>,

再跟上<message>用户名去掉2端空格后长度为${minLength}到${maxlength}</message>后进行提交,将用户名进行修改后,结果显示为去掉2端空格后长度为4到10,siggy 也可以顺利通过。

跟上<field name=”age”>来验证年龄,首先要清楚验证的是表达域中的内容。

接着跟上<field-validator typr=”int”>来验证参数的大小,再跟上<param name=”min”>1</param>,

再跟上<param name=”max”>150</param>,

再跟上<message>年龄范围为1~150</message>后进行提交验证,填入年龄,结果为正确的。

如果要验证正则表达式,而 default.xml 中提供了 regax 用来验证。CDATA 中包括字符串数据而不是将特殊符号作为文本。密码和确认密码时会用到 foo 与 bar。

 

二、步骤

使用验证框架的步骤:

在对应的 action 的包下添加一个验证框架的配置文件,

改文件名为:

actionName-validation.xml


三、总结

案例:

(1)Jsp 页面:

<s:fielderror></s:fielderror>

<form action=”register.action”method=”post”>

用户名:<input type=”text”name=”name”/><br>

密码:<input type=”password”name=”pwd”/><br>

年龄:<input type=”text”name=”age”/><br>

生日:<input type=”text”name=”birthday”/><br>

<input type=”submit”value=“登录”/>

</form>

(2)Action 类:

public class RegisterAction extends ActionSupport{

private String name;

private String pwd;

private int age

private Date birthday;

@Override

public String execute() throws Exception {

System.out.println(“execute”);

return Action.SUCCESS;

}

public String register() {

System.out.println(“register”);

return Action.SUCCESS;

}

public void validateRegister(){

System.out.println(“validate age”);

if(age>100| |age<1){

this.addActionError(“年龄不合法“);

}

}

public void validate(){

System System.out.println(“validate”);

}

public String getName(){

return name;

}

public void setName(String name){

this.name = name;

}

public String getPwd(){

return pwd;

}

public int getAge(){

return age;

}

public void setAge(int age){

this.age = age;

}

public Date getBirthday(){

return birthday;

}

public void setBirthday(Date birthday){

this.birthday = birthday;

}

}

(3)Struts.xml 配置文件:

<package name=”default”extends=”struts-default” namesapece=”/”>

<!-- <action name=”register”

class=”cn.sxt.action.RegisterAction”method=” register”>  

<result>/index.jsp</result>

<result name=”input”>/resgister.jsp</result>

</action> -->

<action name=”register”

class=”cn.sxt.action.RegisterAction”>

< result>/index.jsp</result>

<result name=”input”>/resgister.jsp</result>

</action>

</package>

(4)RegisterValidateAction-validation.xml 验证文件:

<?xml version=”1.0”encoding=”UTF-8”?>

<IDOCTYPE validat ors PUBLIC “-//Apache Struts//XWork Validator 1.0.3//EN”

http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd”><validators>

<field name=”name”>

<field-validator type=”requiredstring”>

<param name=”trim”>true</param>

<message>用户名必填</message>

</ field-validator>

<field-validator type=”stringlength”>

<param name=”trim”>true</param>

<param name=”maxLength”>10</param>

<param name=”minLength”>4</param>

<message>用户名去掉2端空格后长度为${minLength}到${maxlength}</message>

</field-validator>

</field>

<field name=”age”>

<field-validator typr=”int”>

<param name=”min”>1</param>

<param name=”max”>150</param>

<message>年龄范围为1~150</message>

</field-validator>

</field>

</ validators>

相关文章
|
5月前
|
运维 Kubernetes Java
物理部署图
物理部署图用于描述系统运行时的结构,展示硬件配置与软件部署在网络中的方式。它帮助理解分布式系统的部署架构,核心元素包括节点、构建、物件、连接和框架,常用于指导软硬件的协同运行与运维管理。
180 0
|
5月前
|
人工智能 JSON 小程序
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
本文介绍了小白如何通过AI编程工具(如Trae)快速开发应用并实现技术变现。内容涵盖AI编程用途、工具准备、高德地图开发者权限获取、AI工具配置及实战生成旅游攻略与打印页面,帮助零基础用户轻松入门AI编程。
261 0
|
搜索推荐 前端开发 数据安全/隐私保护
改善用户体验方法
【10月更文挑战第9天】改善用户体验方法
1232 3
|
机器学习/深度学习 人工智能 自然语言处理
SCoRe: 通过强化学习教导大语言模型进行自我纠错
谷歌研究人员提出了一种名为自我纠错强化学习(SCoRe)的新方法,旨在使大型语言模型(LLMs)能够在无需外部反馈的情况下即时纠正自己的错误。SCoRe通过在线多轮强化学习训练模型,解决了传统自我纠错方法的局限性。实验结果显示,SCoRe在数学问题求解和代码生成任务上显著提升了模型的自我纠错能力,相较于基准模型和其他方法表现出色。此外,SCoRe还可与其他推理优化技术结合,进一步提升模型性能。尽管存在迭代次数限制和计算成本等局限性,SCoRe为未来研究提供了新的方向,有望推动AI系统的自主性和适应性发展。
676 3
|
边缘计算 人工智能 物联网
|
运维 监控 安全
|
传感器 监控 Linux
Linux|奇怪的知识---CPU温度监控
Linux|奇怪的知识---CPU温度监控
464 1
|
前端开发 应用服务中间件 Linux
Halo博客搭建
Halo博客搭建
770 1
|
机器学习/深度学习 传感器 算法
【红外图像增强】基于引力和侧向抑制网络的红外图像增强模型(Matlab代码实现)
【红外图像增强】基于引力和侧向抑制网络的红外图像增强模型(Matlab代码实现)