博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2数据校验
阅读量:7027 次
发布时间:2019-06-28

本文共 4141 字,大约阅读时间需要 13 分钟。

hot3.png

数据校验指对客户端提交的数据检查是否合法 .

Struts2数据校验有以下两种方法:

一、在Action类中重写validate()方法(必须继承ActionSupport类)

示例:

LoginAction.java

package cn.iborder.action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import cn.iborder.Service.impl.UsersService;import cn.iborder.entity.Users;import java.util.Map;public class LoginAction extends ActionSupport {	Users users = new Users();	ActionContext ac = ActionContext.getContext();	Map
requestMap = ac.getContextMap(); Map
sessionMap = ac.getSession(); public Users getUsers() { return users; } public void setUsers(Users users) { this.users = users; } /** * 重写父类ActionSupport中的validate()方法 * 这样是默认验证当前Action类中的所有方法 */ /* @Override public void validate() { // TODO Auto-generated method stub System.out.println("数据校验开始"); if (users.getUsername() == null) { super.addFieldError("username", "用户名不能为空"); } if (users.getPassword() == null) { super.addFieldError("password", "密码不能为空"); } } */ /** * 指定只验证当前Action类中的login()方法 */ public void validateLogin() { System.out.println("数据校验开始"); if (users.getUsername() == null) { super.addFieldError("username", "用户名不能为空"); } if (users.getPassword() == null) { super.addFieldError("password", "密码不能为空"); } } public String login() { System.out.println("调用login()开始"); System.out.println(users.getUsername()); System.out.println(users.getPassword()); Users user = new UsersService().login(this.users); if (user == null) { requestMap.put("error", "用户不存在!!!"); return NONE; } else { sessionMap.put("isLogin", user); return SUCCESS; } } public String logout() { sessionMap.remove("isLogin"); return SUCCESS; }}

二、使用XWork的validator框架(编写xml校验配置文件)

XWork核心jar包中com.opensymphony.xwork2.validator.validators包下的default.xml文件定义了部分常用的校验器。

default.xml

具体应用如下:

1、类型转换检验器:

    
        
类型转换错误
        
true     
  • fieldName:该参数指定检查是否存在转换异常的字段名称,如果是字段校验,则不用指定该参数。
  • repopulateField:该参数指定当类型转换失败后,返回input页面时,类型转换失败的表单是否保留原来的错误输入。true为保留,false为不保留。

2、日期校验器:

1990-01-01
2010-07-28
  • min:指定字段日期值的最小值,该参数为可选参数。
  • max:指定字段日期值的最大值,该参数为可选参数。

3、浮点数值校验器:

20.1
50.1
  • minInclusive|minExclusive:指定字段的最小值,包含该值|不包含该值。
  • maxInclusive|maxExclusive:指定字段的最大值, 包含该值|不包含该值。

4、邮件地址校验器:

非法的邮件地址

 

5、表达式校验器:

.......
Failed to meet Ognl Expression...
  • expression:该参数为一个逻辑表达式,该参数使用OGNL表达式,并基于值栈计算,返回一个Boolean类型值。

6、字段表达式校验器:

    
        
#myGirfriendCreditLimit]]>        
My credit limit should be MORE than my girlfriend
    

7、整数校验器:

10
100
年龄必须在在${min}到${max}之间

8、正则表达式校验器:

#myGirfriendCreditLimit]]>
My credit limit should be MORE than my girlfriend
  • expression:为必选参数,指定匹配有的表达式。
  • caseSensitive:指明进行匹配时,是否区分大小写,为可选参数,默认为true。

9、必填校验器:

用户名不能为空

10、必填字符串校验器:

true
用户名不能为空
  • trim:可选参数,用于指定是否在校验之前对字符串进行整理,默许为true。

11、字符串长度校验器:

4
10
true

12、网址校验器:

Invalid homepage url

13、visitor校验器:

该校验器名称为:visitor,用来校验Action中定义的复合类型属性,支持简单的复合类型、数组类型、Map等集合类型。

myContext
true

struts2配置xml校验文件步骤:

1、创建xml文件(必须和Action类同一路径)

有两种命名规范

  1. ActionClassName-validation.xml    验证Action类中所有方法
  2. ActionClassName-ActionName-validation.xml    验证Action类中指定方法

其中ActionName指的是struts.xml中配置的action节点的name值

示例:

LoginAction-validation.xml 

用户名不能为空
密码不能为空

 

转载于:https://my.oschina.net/u/2321708/blog/816428

你可能感兴趣的文章
P2P原理基础
查看>>
完成登录功能,用session记住用户名
查看>>
DBCP和C3P0使用--未完善
查看>>
JS常用方法(获取Class、获取元素样式、事件监听、cookie、ajax等)
查看>>
BZOJ 1084 最大子矩阵
查看>>
2018杭电多校第三场1007(凸包,极角排序)
查看>>
django中orm的简单操作
查看>>
Mybatis知识(1)
查看>>
php处理网站url编码及乱码问题
查看>>
快速入门:selenium自动化测试+ubuntu系统+php语言+firefox/chrome浏览器
查看>>
docx 转 doc
查看>>
DD DT DL标签
查看>>
用window.open函数页面传值
查看>>
SPOJ 10707 COT2 - Count on a tree II
查看>>
数据绑定——Vue.js
查看>>
Max Mex
查看>>
[CentOS] 7 不执行文件 /etc/rc.d/rc.local
查看>>
模态窗口的各个属性
查看>>
10.28 (上午) 开课一个月零二十四天 (数据访问)
查看>>
为什么你应该(从现在开始就)写博客
查看>>