使用java代码实现验证

发表时间:2017-05-16 15:48:31 浏览量( 24 ) 留言数( 0 )

学习目标:

1、了解Struts2的代码验证


学习过程:

验证对提高系统的安全性和系统的效率作用非常重要。我们回忆一下验证一般分为客户端验证和服务器端验证。

客户端验证:直接在客户端执行JS进行验证,验证的过程中和服务器端没有任何的交互。

服务器端验证:页面将验证信息传回服务器端,服务器端进行验证,并将验证的结果发送回客户端。

这两个验证都是必不可少的。客户端的验证我们一般使用js完整,服务器端的验证当然需要使用java完成,为了系统的模块化,我们一般会把验证功能抽出来,作为一个独立的模块。struts2作为一个出色的MVC框架,对验证提供了很好的支持。下面我们先介绍一下如何使用代码实现验证。

一、Action类继承ActionSupport,并实现validate方法。

我们先简单的对用户名进行验证。如果用户输入的用户名少于4位,或者多余20为都是非法的。代码如下:

	/*@Override
	public void validate() {
		
		System.out.println("全局的验证");

		if (user.getUsername() == null || user.getUsername().length() < 4
				|| user.getUsername().length() > 20) {
			//添加错误信息
		   this.addFieldError("user.username", "用户名错误,长度必须是4到20位");
		}
		super.validate();//调用父类的
	}

二、页面代码的实现。

页面还是使用我们前一节的用户注册页面,也就是使用struts2的form标签实现。在浏览器中直接输入userAdd.jsp的网址。并测试输入的用户名只有两个字符的,然后点击提交按钮。页面显示如下错误:


attcontent/7fa3bd9f-2efe-49d4-9700-7be89b4adda6.png

证明,验证是已经有作用了,这样我们就可以让验证功能和原来的注册的业务功能分开了。当然如果现在我们访问这个类的其他方法,发现都会有这个验证拦截,因为我们重写了validate方法后,所有的action都会先验证,如果我们先要只拦截adduser方法,那么我们可以这样定义验证方法:注意使用驼峰式命名。

   public void validate方法名称(){

}

注释上面的validate方法重写一个validateAdduser方法。代码如下:

/*
	@Override
	public void validate() {
		
		System.out.println("全局的验证");

		if (user.getUsername() == null || user.getUsername().length() < 4
				|| user.getUsername().length() > 20) {
			//添加错误信息
		   this.addFieldError("user.username", "用户名错误,长度必须是4到20位");
		}
		super.validate();//调用父类的
	}
*/
	// 针对Action中指定的方法  validate+方法名称
	public void validateAdduser(){
		if (user.getUsername() == null || user.getUsername().length() < 4
				|| user.getUsername().length() > 20) {
			//添加错误信息
		   this.addFieldError("user.username", "用户名错误,长度必须是4到20位");
		}
		if(user.getPasswd()==null||user.getPasswd().length()<6){
			//添加错误信息
			   this.addFieldError("user.passwd", "密码错误,长度必须是大于6位");
		}
		super.validate();
	}

这样就只会拦截器adduser方法了。当然,struts2更推荐使用XML验证,这节课事实上作为了解即可,重点是下一节课。