• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > 详解在Spring MVC中使用注解的方式校验RequestParams

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

作者:竹山一叶 字体:[增加 减小] 来源:互联网 时间:2017-05-28

竹山一叶 通过本文主要向大家介绍了springmvc注解详解,springmvc详解,springmvc配置详解,springmvc框架详解,springmvc原理详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

概述

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;
  }
}

</div>

二、通过@Valid注解使用对象

@ResponseBody@RequestMapping(value = "validObject", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.OK)
public String validObject(
    @RequestBody()
    @Valid Foo vFoo, BindingResult vBindingResult){

  return vFoo.getValidString();
}

</div>

校验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;
}
</div>

使用@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();
  }
}

</div>

二、声明@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;
  }
}
</div>

代码:spring-mvc-validator_jb51.rar

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • springMvc注解之@ResponseBody和@RequestBody详解
  • Spring依赖注入的两种方式(根据实例详解)
  • 详解如何用spring Restdocs创建API文档
  • 详解Spring简单容器中的Bean基本加载过程
  • 详解springmvc之json数据交互controller方法返回值为简单类型
  • 详解springMVC之与json数据交互方法
  • 详解SpringMVC和MyBatis框架开发环境搭建和简单实用
  • 详解Spring-Boot集成Spring session并存入redis
  • spring的几个重要类和接口(详解)
  • 详解spring+springmvc+mybatis整合注解

相关文章

  • 2017-05-28java 算法之快速排序实现代码
  • 2017-05-28Spring Boot的Controller控制层和页面
  • 2017-05-28Java微信公众平台开发(11) 微信三大平台的关联
  • 2017-05-28java web SpringMVC后端传json数据到前端页面实例代码
  • 2017-05-28Java IO流对象的序列化和反序列化实例详解
  • 2017-05-28java数组、泛型、集合在多态中的使用及对比
  • 2017-05-28springboot中thymeleaf模板使用详解
  • 2017-05-28springmvc整合freemarker配置的详细步骤
  • 2017-05-28详解获取Spring MVC中所有RequestMapping以及对应方法和参数
  • 2017-05-28spring boot 使用@Async实现异步调用方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • java中参数传递方式详解
    • Java中StringBuffer和StringBuilder_动力节点Java学院整理
    • SpringMVC中Json数据格式转换
    • Java微信公众平台开发(2) 微信服务器post消息体的接收
    • Spring Boot 项目发布到 Tomcat 服务器的操作步骤
    • java String 可变性的分析
    • Java与WebUploader相结合实现文件上传功能(实例代码)
    • 全排列算法-递归与字典序的实现方法(Java)
    • Netty学习教程之Netty与Marshalling结合发送对象
    • 判断二叉树是否为完全二叉树的实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有