好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Spring自带的校验框架Validation的使用实例

1.首先来一个项目结构图以及所需jar包

可以看到,没有添加除了日志和jstl相关的jar包外,没有其他spring以外的第三方jar包(即使用的是spring自带的校验框架)。

2.从前台页面开始,首先是接收用户信息的表单loginform.jsp

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<%@ page language= "java" contenttype= "text/html; charset=utf-8"

   pageencoding= "utf-8" %>

<%@ taglib prefix= "form" uri= "http://HdhCmsTestspringframework.org/tags/form" %>

<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://HdhCmsTestw3.org/tr/html4/loose.dtd" >

<html>

<head>

<meta http-equiv= "content-type" content= "text/html; charset=utf-8" >

<title>测试validator接口验证</title>

</head>

<body>

<h3>登录页</h3>

<!-- 绑定user -->

<form:form modelattribute= "user" method= "post" action= "login" >

<table>

<tr>

<td>登录名:</td>

<td><form:input path= "loginname" /></td>

<!-- 使用form:errors标签 显示loginname属性的错误信息 -->

<td><form:errors path= "loginname" cssstyle= "color:red" /></td>

</tr>

<tr>

<td>密码:</td>

<td><form:input path= "password" /></td>

<!-- 使用form:errors标签 显示password属性的错误信息 -->

<td><form:errors path= "password" cssstyle= "color:red" /></td>

</tr>

<tr>

<td><input type= "submit" ></td>

</tr>

</table>

</form:form>

</body>

</html>

3.实体类user.java

?

1

2

3

4

5

public class user {

private string loginname;

private string password;

     //省略set和get方法…

}

4.控制器usercontroller.java 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

@controller

public class usercontroller {

//注入uservalidator对象

@autowired

@qualifier ( "uservalidator" )

private uservalidator uservalidator;

@requestmapping (value= "/{formname}" )

public string loginform(

@pathvariable string formname,model model){

user user = new user();

model.addattribute( "user" , user);

// 动态跳转页面

return formname;

}

@requestmapping (value= "/login" , method=requestmethod.post)

public string login( @modelattribute user user,model model,errors errors){

model.addattribute( "user" , user);

//调用uservalidator的验证方法

uservalidator.validate(user, errors);

//如果验证不通过跳转到loginform视图

if (errors.haserrors()){

return "loginform" ;

}

return "success" ;

}

}

5.校验器uservalidator.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

//实现spring的validator接口

@repository ( "uservalidator" )

public class uservalidator implements validator{

//该校验器能够对clazz类型的对象进行校验

public boolean supports( class <?> clazz) {

//user指定的class参数所表示的类或接口是否相同,或是否是其超类的超接口

return user. class .isassignablefrom(clazz);

}

//对目标类target进行校验,并将校验错误记录在errors中

public void validate(object target, errors errors) {

/**

*使用validationutils中的一个静态方法rejectifempty()来对

*loginname属性进行校验,假若‘loginname'属性是null或者空字符

*串的话,就拒绝验证通过。

*/

validationutils.rejectifempty(errors, "loginname" , null , "登录名不能为空" );

validationutils.rejectifemptyorwhitespace(errors, "password" , null , "密码不能为空" );

user user = (user) target;

if (user.getloginname().length() > 10 ){

//使用errors的rejectvalue方法验证

errors.rejectvalue( "loginname" , null , "用户名不能超过10个字符" );

}

if (user.getpassword() != null && !user.getpassword().equals( "" )

&& user.getpassword().length() < 6 ){

errors.rejectvalue( "password" , null , "密码不能小于6位" );

}

}

}

6.spring的配置文件和web.xml的配置文件略……

小结:

第一遍敲这个代码的时候,有着各种各样的小问题出现,比较多的就是 类所对应的路径要import对,因为不同的包中可能会有相同名字的类,而此时一不小心就会导错了包,会给后面的编写代码带来不必要的麻烦。昨天的时候就调试这个小小的demo就花了好久的时间,后来也没再去管,然后今天有空了又重新敲了一遍代码,发现没有问题,直接一次就通过了,然后去对比昨天的代码发现,是我在第一遍敲代码的时候把实体类的get和set方法的名字敲错了(追溯起来的话是写属性的时候把属性名敲错了,然后get和set方法是自动生成的,后面去修改属性时导致没有将相应的set和get方法改正),哎,,,还是太粗心

ok,然后就是启动服务器运行程序…

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/Satisfy_555/article/details/79816971

查看更多关于Spring自带的校验框架Validation的使用实例的详细内容...

  阅读:22次