一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解在Spring MVC中使用注解的方式校驗RequestParams

詳解在Spring MVC中使用注解的方式校驗RequestParams

2020-08-26 10:20竹山一葉 Java教程

本篇文章主要介紹了詳解在Spring MVC中使用注解的方式校驗RequestParams ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

概述

Spring MVC支持Bean Validation,通過這個驗證技術,可以通過注解方式,很方便的對輸入參數進行驗證,之前使用的校驗方式,都是基于Bean對象的,但是在@RequestParam中,沒有Bean對象,這樣使得校驗無法進行,可以通過使用@Validated注解,使得校驗可以進行。

校驗bean對象

一般校驗bean對象,為了可以自動的校驗屬性,可以通過兩步解決:

一、聲明對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.github.yongzhizhan.draftbox.model;
 
import javax.validation.constraints.Size;
 
/**
 * 帶驗證的對象
 * @author zhanyongzhi
 */public class Foo {
  private String validString;
 
  @Size(min = 1, max = 5)
  public String getValidString() {
    return validString;
  }
 
  public void setValidString(final String vValidString) {
    validString = vValidString;
  }
}

二、通過@Valid注解使用對象

?
1
2
3
4
5
6
7
8
@ResponseBody@RequestMapping(value = "validObject", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public String validObject(
    @RequestBody()
    @Valid Foo vFoo, BindingResult vBindingResult){
 
  return vFoo.getValidString();
}

校驗RequestParams

使用校驗bean的方式,沒有辦法校驗RequestParam的內容,一般在處理Get請求的時候,會使用下面這樣的代碼:

?
1
2
3
4
5
6
7
8
@ResponseBody@RequestMapping(value = "validString", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public String validString(
    @RequestParam(value = "str", defaultValue = "")
    String vStr){
 
  return vStr;
}

使用@Valid注解,對RequestParam對應的參數進行注解,是無效的,需要使用@Validated注解來使得驗證生效。操作步驟如下:

一、聲明錯誤處理類

?
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
package com.github.yongzhizhan.draftbox.controller;
 
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
 
import javax.validation.ValidationException;
 
@ControllerAdvice
@Component
public class GlobalExceptionHandler {
  @Bean
  public MethodValidationPostProcessor methodValidationPostProcessor() {
    return new MethodValidationPostProcessor();
  }
 
  @ExceptionHandler
  @ResponseBody
  @ResponseStatus(HttpStatus.BAD_REQUEST)
  public String handle(ValidationException exception) {
    System.out.println("bad request, " + exception.getMessage());
    return "bad request, " + exception.getMessage();
  }
}

二、聲明@Validated并加上校驗注解

?
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
package com.github.yongzhizhan.draftbox.controller;
 
import com.github.yongzhizhan.draftbox.model.Foo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
 
import javax.validation.Valid;
import javax.validation.constraints.Size;
 
@RestController
@SuppressWarnings("UnusedDeclaration")
@Validated
public class IndexController {
  @ResponseBody
  @RequestMapping(value = "validString", method = RequestMethod.GET)
  @ResponseStatus(HttpStatus.OK)
  public String validString(
      @RequestParam(value = "str", defaultValue = "")
      @Size(min = 1, max = 3)
      String vStr){
 
    return vStr;
  }
}

代碼:spring-mvc-validator.rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/jeffen/p/6402475.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91制片厂 果冻传媒 天美传媒 | 大ji巴好好爽好深网站 | 国产性做久久久久久 | 亚洲精品第五页 | 毛片应用 | 国产精品国色综合久久 | 啊好大好爽 | 成人区精品一区二区毛片不卡 | 亚洲国产欧美在线人成aaa | 国产三级自拍视频 | 免费日本在线视频 | 天天色综 | 精品国产在线观看 | 色播开心网 | 成年人免费看的视频 | 拔插拔插.com | 国产福利片在线 | 四虎在线网站 | 精品久久洲久久久久护士免费 | 秋霞理论一级在线观看手机版 | 免费欧美视频 | 四虎精品影视 | 免费看伦理片 | 91次元成年破解版 | 99午夜高清在线视频在观看 | 91庥豆果冻天美精东蜜桃传媒 | 色老板在线 | 好深快点再快点好爽视频 | 国产综合视频 | 亚洲视频在线观看免费 | chinese国产老太性 | 国产经典一区 | 激情亚洲 | 91久久国产视频 | 青青色综合 | 日日操美女 | 国产一区二区三区高清 | 啊哈~嗯哼~用力cao我小说 | 男生和老师一起差差差 | 婷婷久久热99在线精品 | 日本免费精品视频 |