Struts2数据有效性的校验的两种方式,Struts2数据校验(案例+解析)
11}]]> 手机号格式有误 1974/01/01 2002/01/01 生日不合法!
发布日期:2021-06-29 15:02:03
浏览次数:3
分类:技术文章
本文共 5238 字,大约阅读时间需要 17 分钟。
一、数据的校验,Struts2提供了两类数据校验
前台校验:JS校验、
JS的校验不是必须的,JS的校验是可以被绕行的、JS提升用户体验。
后台校验:编码校验。
必须的校验
执行拦截器的时候向FieldError当中添加错误信息
1、Struts2提供的第一种数据校验(手动编码的方式进行校验)
(1)JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %>Insert title here 登录页面
(2)struts.xml
(3)LoginAction1
继承ActionSupport类
抽象validate方法:针对Action当中所有的方法。 在这个方法当中可以编写校验代码。package com.itzheng.web.action.demo1;import com.opensymphony.xwork2.ActionSupport;/* * 数据的校验 * 继承了ActionSupport之后才有一些功能:数据的校验,国际化,设置错误的信息! */public class LoginAction1 extends ActionSupport{ private String username; private String password; public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } @Override public String execute() throws Exception { // TODO Auto-generated method stub return NONE; } //数据校验的方法: @Override public void validate() { // TODO Auto-generated method stub //判断用户名不能为空 username.trim() 去掉空格 if(username == null || username.trim().length() == 0 ) { //阻止execute方法执行。 this.addFieldError("username", "用户名不能为空!"); } //判断密码不能为空 if(password == null || password.trim().length() == 0) { this.addFieldError("password", "密码不能为空"); } }}
页面效果
当Action当中有很多方法的时候,以现在这种情况都会走validate,然后再执行这些方法,因此需要(4)针对Action当中某个方法进行校验:例如Action当中的add方法或者modify的方法。
编写一个与validate 这个方法格式相同的方法,但是方法的名称要写validate+要校验的方法名称‘’
validateAdd();//校验add方法validateModify();//校验Modify方法
2、Struts2提供的第二种数据校验(XML配置文件的方式进行校验)
Action当中需要提供get方法
2.1针对Action当中所有的方法
(1)创建JSP
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib uri="/struts-tags" prefix="s" %>Insert title here 登录页面
(2)LoginAction2
package com.itzheng.web.action.demo1;import com.opensymphony.xwork2.ActionSupport;public class LoginAction2 extends ActionSupport { private String username; private String password; public void setUsername(String username) { this.username = username; } public void setPassword(String password) { this.password = password; } // 为使XML当中username 和 password获得对应的值,需要get方法 public String getUsername() { return username; } public String getPassword() { return password; } @Override public String execute() throws Exception { System.out.println(username); System.out.println(password); return super.execute(); }}
在Action所在的包下创建一个与Action类名相同的+(-validation.xml)
(3)在XML当中写入
首先找到对应的文件(头信息)在xwork-core-2.3.7.jar有一个xwork-validator-1.0.3.dtd
校验规则 requiredstring就是校验规则:从com.opensymphony.xwork2.validator.validators,default.xml当中可以查看校验的规则 进行配置LoginAction2-validation.xml
用户名不能为空!(XML) 密码不能为空!(XML)
(4)配置
(5)测试
2.2针对Action当中某一个方法进行校验:
在Action所在订单包下创建一个文件与Action类名相同-要访问的方法所对应的action的名称-validation.xml
创建execute的文件
LoginAction2-login2-validation.xml
表示拦截的是LoginAction2当中的login2请求
LoginAction2-login2-validation.xml6 12 密码需要在6-12位之间!
3、Struts2提供的校验器列表
4、综合案例
用户名不能为空! 密码不能为空! 6 12 密码需要在6-12位之间! 两次密码输入不一致 18 40 年龄输入不合法!必须是18-40岁之间的! 邮箱格式不正确
package com.itzheng.web.action.demo5;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegistAction extends ActionSupport { private String username; private String password; private String repassword; private int age; private String email; private String phone; private Date birthday; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Override public String execute() throws Exception { // TODO Auto-generated method stub return NONE; }}
转载地址:https://code100.blog.csdn.net/article/details/106993720 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月02日 20时39分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux 是如何 快速一键安装禅道的呐?
2019-04-29
运维面试基础试题(四)
2019-04-29
一键安装Openstack单节点 必能成功
2019-04-29
面试紧张怎么办
2019-04-29
关系型数据库 ,nosql数据库简介
2019-04-29
Centos 7搭建NTP时间同步服务器
2019-04-29
centos7 基于rsync+inotify 实现定时备份
2019-04-29
指定IP进行 文件的分发
2019-04-29
基于http搭建本地yum仓库
2019-04-29
常规邮件基础
2019-04-29
邮件基础之 -- SMTP协议
2019-04-29
Java设计模式--责任链模式
2019-04-29
OpenCV的cvLoadImage函数
2019-04-29
OpenCV中与matlab中相对应的函数
2019-04-29
C/C++中二维数组作函数形参时,调用函数时,可传递的实参类型的小结
2019-04-29
cvGetSubRect与cvMul用法
2019-04-29
opencv图像处理梯度边缘和角点
2019-04-29
Caffe源码中blob文件分析
2019-04-29
OpenCV 图像采样 插值 几何变换
2019-04-29
图像处理-仿射变换 AffineTransform
2019-04-29