开发者学堂课程【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 有很多类型。
加入 Register
V
alidate
A
ction
.
java
以便进行下一步操作,用验证器验证的话也需要继承 ActionSupport,在 src 下的 cn
.sxt.action
中建立一个相同目录的 xml 文件,即为文件规则。
所以新建一个 Register
V
alidate
A
ction
-
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 表示为去除空格的作用,而在 Required
S
tring
V
alidator
中的 doTrim 根据 set 去进行设置,
所以跟上<
param name=”trim”>true</param>
,验证有无空格以便于去除空格,跟上<
message>
用户名必填<
/message>
用来验证 param。
这时需将 Register
A
ction
改为 Register
V
alidate
A
ction
,进行测试,不填用户名,结果为得出不能找到 register 方法。
这时将 register 方法删除再次进行测试,消息并没有进行显示,这时加上<
s:fielderror></s:fielderror>
,再进行提交,用户名必填则会显示。
填写验证规则时,验证属性则写入 field,验证其他则写入其验证器,而验证长度时,找到 Stringlength,
再找到 String
L
ength
F
ield
V
alidator
,其中可以看到 doTrim(去除空格)、最小长度、以及最大长度的属性,则跟上 <
field- validator type=”
stringlength
”></field- validator>
。
使用验证框架时,则会通过案例找到配置文件,再找到验证器,再找到验证器的类来执行,再通过验证规则中的 validate 方法来执行,执行不成功则会通过 Fielderror 来进行下一步操作,
则跟上<
param name=”trim”>true</param>
,再跟上<
param name=”
max
L
ength
”>10</param>,
再跟上<
param name=”
min
L
ength
”>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=”m
ax
”>150</param>,
再跟上<
message>
年龄范围为1
~150</message>
后进行提交验证,填入年龄,结果为正确的。
如果要验证正则表达式,而 default.xml 中提供了 regax 用来验证。CDATA 中包括字符串数据而不是将特殊符号作为文本。密码和确认密码时会用到 foo 与 bar。
二、步骤
使用验证框架的步骤:
在对应的 action 的包下添加一个验证框架的配置文件,
改文件名为:
action
N
ame
-
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”
c
lass=”cn.sxt.action.RegisterAction”method=” register”
>
<result>/index.jsp</result>
<result name=”input”>/resgister.jsp</result>
</action>
-->
<action name=”register”
c
lass=”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=”
max
L
ength
”>10</param>
<
param name=”
min
L
ength
”>4</param>
<
message>
用户名去掉2端空格后长度为$
{minLength}
到$
{maxlength}</message>
<
/field-validator>
<
/field>
<
field name=”age”>
<field-validator typr=”
int
”>
<
param name=”min”>1</param>
<
param name=”m
ax
”>150</param>
<
message>
年龄范围为1
~150</message>
<
/field-validator>
</field>
<
/ validators>