Struts2 验证机制详解:xml配置与Action validate() 方法
5星 · 超过95%的资源 需积分: 10 178 浏览量
更新于2024-09-15
收藏 50KB DOCX 举报
"本文主要介绍了Struts2框架中的两种验证方式:验证器(基于XML配置)和Action类中的validate()方法。这两种验证方法都是为了确保数据的正确性,防止非法数据进入系统。"
在Struts2框架中,数据验证是非常重要的一步,它可以确保用户提交的数据符合系统的预期规则。Struts2提供了两种验证方式,一种是通过验证器(Validator),需要在XML配置文件中定义验证规则;另一种是直接在Action类中实现validate()方法进行验证。
首先,让我们来了解验证框架的工作流程:
1. 当用户发送请求时,请求参数会被Struts2的params拦截器捕获,并将这些参数值放入ValueStack。但请注意,这些参数此时并未直接赋值给Action类的成员变量。
2. 如果使用了验证器,验证器会检查ValueStack中的参数是否满足XML配置文件中设定的验证规则。如果验证失败,验证器会生成相应的错误信息。
3. 接着,请求会到达workflow拦截器,该拦截器会调用Action类中的validate()方法进行额外的验证。如果这个方法内验证失败,同样会产生错误信息。
4. workflow拦截器会检查ValidationAware接口的实现(ActionSupport类已经实现了此接口),通过hasErrors()方法判断是否有错误信息。只要有错误,workflow拦截器会阻止请求继续执行,而是将控制权返回给输入页面,显示错误信息给用户。
5. 如果所有验证都通过,workflow拦截器则会允许请求继续,执行Action的业务逻辑。
下面是一个简单的例子,展示了如何在Action类中使用validate()方法:
```java
package cn.itcast.Action;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class PersonAction extends ActionSupport {
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
private String username;
private String mobile;
// validate()方法用于验证数据
@Override
public void validate() {
// 检查用户名是否为空
if (username == null || username.trim().isEmpty()) {
addFieldError("username", "用户名不能为空");
}
// 正则表达式验证手机号码
Pattern pattern = Pattern.compile("^1[3-9]\\d{9}$");
if (!pattern.matcher(mobile).matches()) {
addFieldError("mobile", "手机号码格式不正确");
}
}
public String updata() {
// 如果验证通过,执行业务逻辑
ActionContext.getContext().put("message", "更新成功");
return "success";
}
}
```
在这个例子中,我们定义了PersonAction类,并重写了validate()方法。在这里,我们对username和mobile两个字段进行了验证。如果username为空或mobile不符合手机号码的格式,validate()方法会添加错误信息到字段,并在后续的流程中被workflow拦截器检测到,从而阻止执行updata()方法。
总结来说,Struts2的验证机制是为了确保数据的准确性和安全性,通过验证器或Action中的validate()方法,我们可以自定义数据验证规则,有效地防止了非法数据的输入,提高了系统的稳定性和用户体验。同时,通过合理的错误处理,用户能够清晰地了解到数据输入的问题,方便他们进行修正。
2013-04-07 上传
2022-09-21 上传
2023-05-19 上传
2023-05-24 上传
2023-07-15 上传
struts从2.3.15升级到2.5.30后,action接收的list数组被限制最大只接收256,调试过程中无报错,用postman调接口后,传参数组大小为259,但是传到后台后数组大小只有256
2023-06-09 上传
2023-07-13 上传
2023-06-09 上传
_Fighter
- 粉丝: 26
- 资源: 60
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦