struts2中的手动验证

本文详细介绍了如何在Struts框架中实现手动验证,包括全局验证方法validate和特定方法如validateRegister、validateLogin的验证逻辑。重点阐述了如何通过正则表达式验证用户名和密码的合规性,以及如何处理验证失败的情况。
	private User user;
	/**
	 * struts手动验证
	 * @return
	 */
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	/**
	 * 重写validate()方法,如果只有这个action类只有一个方法,可以把验证代码放到这里。
	 * 但是如果有多个方法。可以把这些方法中公共的验证放在validate()方法中
	 * 每个类特有的验证代码可以使用validate*()的方法,*表示方法名。如login方法,可以使用validateLogin()方法首字母大写。
	 */
	@Override
	public void validate() {//公共的验证方法
		if(user.getUsername()==null||user.getUsername().trim().equals("")){
			//this.addActionError("")action错误级别。数据库操作错误的时候。
			//this.addActionMessage("") 消息
			this.addFieldError("user.username","密码不能为空!");//属性级别。第一个参数是文本框中的name中的名字。第二个是提示语句。
			//this.addFieldError("user.username",this.getText("login_username_null"));//添加属性的错误,也可以用国际化获取
		}else if(!java.util.regex.Pattern.matches("^[a-zA-Z][a-zA-Z0-9]{3,14}$", user.getUsername())){//正规表达式验证,要加!。
			this.addFieldError("user.username","用户名必须以字母开头,字母和数字下划线,4到14位组成");
			//this.addFieldError("user.username", this.getText("login_username_reg"));
		}
		
		if(user.getPassword()==null||user.getUsername().equals("")){
			this.addFieldError("user.password","密码不能为空!");		
			//this.addFieldError("user.password", this.getText("login_password_null"));
		}else if(!java.util.regex.Pattern.matches("^[a-zA-Z0-9@#$]{6,14}$", user.getPassword())){
			this.addFieldError("user.password","密码必须以字母开头,字母和数字下划线,6到14位组成!");
			//this.addFieldError("user.password", this.getText("login_password_reg"));
		}
		
		System.out.println("validate调用");
	}

	public void validateRegister() {//注册验证方法调用
		System.out.println("validate注册验证方法调用");
		if(!user.getRegPwd().equals(user.getPassword())){//判读确认密码
			this.addFieldError("user.regPwd", "密码不一致!");
		}
		if(!java.util.regex.Pattern.matches("^[0-9]{1,3}$", user.getAge()+"")){//判读年龄
			this.addFieldError("user.age", "年龄必须由数字组成!1到3位");
		}else if(user.getAge()<18||user.getAge()>120){
			this.addFieldError("user.age", "年龄必须由18到120位");
		}
	}
	
	public void validateLogin() {//登录验证方法调用
		System.out.println("validate登录验证方法调用");
	}
	
	public String login(){//登录方法
		System.out.println("登录方法执行");
		if(this.hasFieldErrors()){//判读是否存在filedError错误
			return INPUT;
		}
		return SUCCESS;
	}
	
	public String register(){//注册方法
		System.out.println("注册方法执行");
		if(this.hasFieldErrors()){//判读是否存在filedError错误
			return INPUT;
		}
		return SUCCESS;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值