天天看点

SpringMVC使用@Valid注解进行数据验证

我们在做form表单提交的时候,只在前端做数据校验是不够安全的,所以有时候我们需要在后端同样做数据的校验。好在springmvc在后台验证给我们提供了一个比较好的支持。那就是使用valid接口的实现类做数据校验。在这之前我们先做一下准备的工作。

我们先把需要的jar包添加进来。

接下来的第一 步我们需要写一个类来实现validator接口。在这个类里我们需要定义它支持校验的javabean,实现validate方法,用来进行相关的校验。具体的实现类如下:

我们需要在controller的类里使用刚才写的validtor的校验实现类来进行表单数据的校验。我们需要在controller里用@initbinder注解把刚才的校验类绑定到webdatabinder类里。写法如下:

接下来我们需要在@requestmapping这个注解所在的方法上使用@valid注解进行数据的校验。

接下来我们来看一下效果:

请求:http://localhost:8081/testpersonalvalidtor.do

结果:

SpringMVC使用@Valid注解进行数据验证

请求:http://localhost:8081/testpersonalvalidtor.do?name=张三&address=三元桥

SpringMVC使用@Valid注解进行数据验证

具体controller类代码如下:

personscope实体类:

这里需要注意的是:@valid要紧挨着javabean(即personscope),要不然不会生效的。

另外需要注意的是:这里的校验是哪个请求需要校验,就写在哪个请求上。如果需要配置全局的校验的话,可以在<mvc:annotation-driven/>中配置validator。写法如下:

上面的错误信息的展示是我们自己来展示的错误信息,但是springmvc还给我们提供了一个<form:errors />标签来展示错误信息。例子如下:

jsp页面内容如下:

注意:<form:errors />标签是springmvc提供的,所以我们得引入这个标签库。<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

效果如下:

SpringMVC使用@Valid注解进行数据验证