概述

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

校验bean对象

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

一、声明对象

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注解使用对象

@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请求的时候,会使用下面这样的代码:

@ResponseBody@RequestMapping(value = "validString", method = RequestMethod.GET)

@ResponseStatus(HttpStatus.OK)

public String validString(

@RequestParam(value = "str", defaultValue = "")

String vStr){

return vStr;

}

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

一、声明错误处理类

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并加上校验注解

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;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java requestparams_详解在Spring MVC中使用注解的方式校验RequestParams相关推荐

  1. 在Spring MVC中使用注解的方式校验RequestParams

    概述   Spring MVC支持Bean Validation,通过这个验证技术,可以通过注解方式,很方便的对输入参数进行验证,之前使用的校验方式,都是基于Bean对象的,但是在@RequestPa ...

  2. Spring MVC中@ControllerAdvice注解实现全局异常拦截

    Spring MVC中@ControllerAdvice注解实现全局异常拦截 参考文章: (1)Spring MVC中@ControllerAdvice注解实现全局异常拦截 (2)https://ww ...

  3. java事务是基于数据库的么_详解在Spring Boot中使用数据库事务

    我们在前面已经分别介绍了如何在spring Boot中使用JPA以及如何在Spring Boot中输出REST资源.那么关于数据库访问还有一个核心操作那就是事务的处理了,前面两篇博客小伙伴们已经见识到 ...

  4. Spring MVC中@ModelAttribute注解的使用

    通过 org.springframework.web.bind.annotation.ModelAttribute 注解类型可经常实现以下两个功能: 1)绑定请求参数到实体对象(表单的命令对象) @R ...

  5. Java基础——Java NIO详解(二)

    一.简介 在我的上一篇文章Java NIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO). 二.异步IO 异步 I/O 是一种没有阻塞地读写数据的方法 ...

  6. Spring MVC中@Controller和@RequestMapping注解详解

    在<第一个Spring MVC应用>教程中创建了两个传统风格的控制器,它们是实现 Controller 接口的类.传统风格的控制器不仅需要在配置文件中部署映映射,而且只能编写一个处理方法, ...

  7. spring MVC请求处理类注解属性详解

    spring MVC请求处理类注解属性详解

  8. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

  9. java在spring mvc中的图片接收与发送处理

    1.作为client发送和获取图片 1.1.发送图片 作为client时发送图片通常是通过from-data的multipart形式来发送的,这时我们就在模拟浏览器的form文件表单来提交请求,mul ...

最新文章

  1. Java12和Jdk12安装以及OpenJdk12源码
  2. iphone导出照片到电脑_如何把 iPhone 中的照片快速传到电脑上?
  3. VS2008中vss的设置
  4. Android——开源框架Universal-Image-Loader + Fragment使用+轮播广告
  5. maven修改setting文件后重启_Maven项目构建
  6. 多线程面试题之原子性、可见性、有序性
  7. SAP Spartacus 自定义指令的实现以及通过@HostBinding实现属性绑定
  8. 实现Windows和Linux之间的文件共享
  9. c语言图案问题,C语言绘图问题
  10. 基于ASP.net的电力系统分析精品课程网站
  11. java.lang.SecurityException: Prohibited package name: java.xxx.xxxx
  12. linux环境中nagios(nagios core)安装?nagios安装?
  13. 代码中的一个分号,引发程序员的疯狂热议
  14. SpringMVC+uploadify3.2.1版实现附件上传功能(直接可以使用)
  15. STM32 PWM呼吸灯程序
  16. Android影院选座
  17. 查看linux主机防火墙列表,linux防火墙状态查看的方法实例
  18. UltraCompare for Mac(文件内容对比神器)v22
  19. detach()函数的用法
  20. 计算机程序运行消耗的内存,电脑内存多大合适?运行内存占用率高的秘密

热门文章

  1. python类型检查_python【数据类型检查】
  2. stm32呼吸灯程序_STM32裸机开发基础篇02点亮LED
  3. sed 之简单用法小记
  4. MySql库、表权限管理
  5. Sql JOIN 一张图说明
  6. libvirt 安装篇
  7. highchart接收后台数据用法
  8. 我为什么做程序猿訪谈录
  9. http://item.jd.com/1275996920.html
  10. C++ Primer 读书笔记 - 第二章