我们在做form表单提交的时候,只在前端做数据校验是不够安全的,所以有时候我们需要在后端同样做数据的校验。好在springmvc在后台验证给我们提供了一个比较好的支持。那就是使用valid接口的实现类做数据校验。在这之前我们先做一下准备的工作。
我们先把需要的jar包添加进来。
接下来的第一 步我们需要写一个类来实现validator接口。在这个类里我们需要定义它支持校验的javabean,实现validate方法,用来进行相关的校验。具体的实现类如下:
我们需要在controller的类里使用刚才写的validtor的校验实现类来进行表单数据的校验。我们需要在controller里用@initbinder注解把刚才的校验类绑定到webdatabinder类里。写法如下:
接下来我们需要在@requestmapping这个注解所在的方法上使用@valid注解进行数据的校验。
接下来我们来看一下效果:
请求:http://localhost:8081/testpersonalvalidtor.do
结果:
请求:http://localhost:8081/testpersonalvalidtor.do?name=张三&address=三元桥
具体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" %>
效果如下: