015 参数校验
Posted 最爱五仁月饼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了015 参数校验相关的知识,希望对你有一定的参考价值。
一 . 概述
前台的js校验我们总是不可相信的,因此后台的校验就是最后一道防线,做为一个mvc框架springmvc也提供了一整套的校验框架.
二 . 参数验证
springmvc支持jsr303,使用hibernate validate帮助我们实现Bean的校验.
首先我们需要加入hibernate validate的支持.
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.4.Final</version> </dependency>
我们使用的是hibernate-validate作为数据验证的实现.
修改之前的Bean的定义:
@SuppressWarnings("serial") public class User implements Serializable{ @NotNull(message="用户名不能为空") @Length(min=3,max=10,message="用户名必须在3到10位之间.") private String name; private int age;
我们在Bean之上添加了验证需要的注解元素.
最后,我们需要将我们的验证器进行配置:
<mvc:annotation-driven validator="validator"></mvc:annotation-driven> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"></property> </bean>
现在我们就进行测试:
当我们输入了不合法的参数的时候,页面就会被重定向到400,参数不正确的页面提示上去.
这就说明了,我们配置的hibernate-validate生效了.
三. 错误信息的获取
在上面我们看到了我们的验证实际上已经生效了,但是我们却没有获取到错误信息.
下面我们说一下,错误信息的获取方式.
@RequestMapping("/validate") public String validate(@Validated User user,BindingResult result) { System.out.println("验证成功了..."); //如果验证中有错误信息 if(result.hasErrors()) { //获取错误信息 List<ObjectError> allErrors = result.getAllErrors(); for(ObjectError err : allErrors) { System.out.println(err.getDefaultMessage()); } } return "/WEB-INF/jsp/success.jsp"; }
在上面的代码之中,我们获取到了错误的信息.
当然在实际的过程之中,如果我们获取了错误了信息,就应该将错误的信息返回给用户.上面的代码只是解释获取错误信息的方式.
三 . 总结
虽然springmvc提供了这样的一个验证机制,但是这个机制说起来使用也是非常麻烦的,就是单单对这些属性的校验规则的编写,我们就十分的头疼了.
我们在实际之中,更可能的是自己封装了一个校验机制,比如使用springmvc提供的拦截器机制.
以上是关于015 参数校验的主要内容,如果未能解决你的问题,请参考以下文章