SpringMVC如何利用注解实现RequestParams校验

  介绍

SpringMVC如何利用注解实现RequestParams校验?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<强>概述

Spring MVC支持Bean验证,通过这个验证技术,可以通过注解方式,很方便的对输入参数进行验证,之前使用的校验方式,都是基于Bean对象的,但是在@RequestParam中,没有豆对象,这样使得校验无法进行,可以通过使用@Validated注解,使得校验可以进行。

<>强校验Bean对象

一般校验Bean对象,为了可以自动的校验属性,可以通过两步解决:


包com.github.yongzhizhan.draftbox.model;
  
  进口javax.validation.constraints.Size;/* *
  *带验证的对象
  * @author zhanyongzhi
  公共类Foo {*/私人字符串validString;
  
  @ (min=1, max=5)
  公共字符串getValidString () {
  返回validString;
  }
  
  公共空间setValidString(最终字符串vValidString) {
  validString=vValidString;
  }
  }


 @ResponseBody@RequestMapping (value=https://www.yisu.com/zixun/皏alidObject”方法=RequestMethod.POST)
  @ResponseStatus (HttpStatus.OK)
  公共字符串validObject (
  @RequestBody ()
  @Valid Foo vFoo, BindingResult vBindingResult) {
  
  返回vFoo.getValidString ();
  }

<>强校验RequestParams

使用校验bean的方式,没有办法校验RequestParam的内容,一般在处理得到请求的时候,会使用下面这样的代码:

 @ResponseBody@RequestMapping (value=https://www.yisu.com/zixun/皏alidString”方法=RequestMethod.GET)
  @ResponseStatus (HttpStatus.OK)
  公共字符串validString (
  @RequestParam (value=皊tr defaultValue=" ")
  字符串vStr) {
  
  返回vStr;
  }

使用@Valid注解,对RequestParam对应的参数进行注解,是无效的,需要使用@Validated注解来使得验证生效。操作步骤如下:


包com.github.yongzhizhan.draftbox.controller;
  
  进口org.springframework.context.annotation.Bean;
  进口org.springframework.http.HttpStatus;
  进口org.springframework.stereotype.Component;
  进口org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
  进口org.springframework.web.bind.annotation.ControllerAdvice;
  进口org.springframework.web.bind.annotation.ExceptionHandler;
  进口org.springframework.web.bind.annotation.ResponseBody;
  进口org.springframework.web.bind.annotation.ResponseStatus;
  
  进口javax.validation.ValidationException;
  
  @ControllerAdvice
  @ component
  公开课GlobalExceptionHandler {
  @ bean
  公共MethodValidationPostProcessor MethodValidationPostProcessor () {
  返回新MethodValidationPostProcessor ();
  }
  
  @ExceptionHandler
  @ResponseBody
  @ResponseStatus (HttpStatus.BAD_REQUEST)
  公共字符串处理(ValidationException异常例外){
  System.out.println(“错误请求,“;+ exception.getMessage ());
  返回“糟糕的请求,“+ exception.getMessage ();
  }
  }


包com.github.yongzhizhan.draftbox.controller;
  
  进口com.github.yongzhizhan.draftbox.model.Foo;
  进口org.springframework.beans.factory.annotation.Value;
  进口org.springframework.http.HttpStatus;
  进口org.springframework.validation.BindingResult;
  进口org.springframework.validation.annotation.Validated;
  进口org.springframework.web.bind.annotation.RequestBody;
  进口org.springframework.web.bind.annotation.RequestMapping;
  进口org.springframework.web.bind.annotation.RequestMethod;
  进口org.springframework.web.bind.annotation.RequestParam;
  进口org.springframework.web.bind.annotation.ResponseBody;
  进口org.springframework.web.bind.annotation.ResponseStatus;
  进口org.springframework.web.bind.annotation.RestController;
  
  进口javax.validation.Valid;
  进口javax.validation.constraints.Size;
  
  @RestController
  @SuppressWarnings (“UnusedDeclaration")
  @Validated
  公开课IndexController {
  @ResponseBody
  @RequestMapping (value=https://www.yisu.com/zixun/皏alidString”方法=RequestMethod.GET)
  @ResponseStatus (HttpStatus.OK)
  公共字符串validString (
  @RequestParam (value=皊tr defaultValue=" ")
  @ (min=1, max=3)
  字符串vStr) {
  
  返回vStr;
  }
  }

关于SpringMVC如何利用注解实现RequestParams校验问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

SpringMVC如何利用注解实现RequestParams校验