spring学习之参数传递与检验详解

 更新时间:2017年07月13日 09:55:43   作者:沉淀  
这篇文章主要给大家介绍了关于spring参数传递与检验的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作能带来一定的帮助,需要的朋友们下面跟着小编来一起学习学习吧。

前言

Spring是于2003 年兴起的一个轻量级的Java 开发框架,非常受现在开发者的喜爱,下面这篇文章主要给大家介绍了关于spring参数传递与检验的相关内容,分享出供大家参考学习,下面来一起看看详细的介绍:

一、背景

在spring请求时,要对参数进行检查,以前一直使用如下方式来获取参数,在参数特别多的时候,代码很不简洁。

String userId= request.getParameter("userId");

后来使用注解@RequestParam代码整洁了好多

@RequestParam(value = "userId",required=true) String userId

后来对于参数比较多的情况,使用一个bean来接收请求参数

@RequestMapping(value="/saveUser")
public String saveUser(User user) {}

对于比较复杂,有层级关系情况,使用注解@RequestBody实现

public String setUser(@RequestBody String userInfo) {
 //使用fastjson转换为实体类
}

不管使用以上的哪种方式都要对参数进行校验,如果一个个参数的检查是否为空,检查边界范围,会导致代码很多。使用@Valid注解来对参数进行校验能让代码更整洁。

二、使用

本文以实体类接收请求参数为例简单讲解,validation一共有hibernate-validator,javax.validation和spring-validator三种注解,本文主要是简单讲解一下javax.validation的使用

@RequestMapping(value="/saveUser")
@ResponseBody
public JSONObject saveUser(@Valid User user, BindingResult result){
  JSONObject jsonObject = new JSONObject();
  //判断是否检验错误信息
  if(result.hasErrors()){
   //取出第一条错误信息返回
   List<FieldError> list = result.getFieldErrors();
   String errorMessage = CollectionUtils.isEmpty(list)?
     "参数错误!":list.get(0).getDefaultMessage();
   jsonObject.put("errorMessage",errorMessage );
   return jsonObject;
  }
  //saveUser保存用户信息模块省略
  jsonObject.put("errorMessage","success");
  return jsonObject;
 }
//使用lombok
@Data
public class User implements Serializable{
 @NotNull(message = "用户id不能为空")
 @Pattern(regexp="^\\d{12}$",message = "用户id非法")
 private String userId;
 private String userName;
 private int age;
}
  • 使用@Valid注解进行参数检查
  • 在没有使用BindingResult时,程序会抛出空指针等异常信息,不能返回自定义信息,网上查了一下需要使用BindingResult来处理Error信息,自定义返回错误数据。
  • @NotNull,@Pattern,@Size,@Max,@Min,@Digits是我在项目中经常使用的注解

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Java实现批量下载选中文件功能

    Java实现批量下载选中文件功能

    这篇文章主要介绍了Java实现批量下载选中文件功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • Java实现的串口通信功能示例

    Java实现的串口通信功能示例

    这篇文章主要介绍了Java实现的串口通信功能,结合实例形式分析了java串口通信的具体操作步骤与相关注意事项,需要的朋友可以参考下
    2018-01-01
  • maven加入spring框架的详细教程

    maven加入spring框架的详细教程

    这篇文章主要介绍了maven加入spring框架的详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • SpringBoot静态资源路径配置及主页显示

    SpringBoot静态资源路径配置及主页显示

    这篇文章主要介绍了SpringBoot静态资源路径配置及主页显示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 带你快速搞定java多线程

    带你快速搞定java多线程

    这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下
    2021-07-07
  • 深入理解JVM之Class类文件结构详解

    深入理解JVM之Class类文件结构详解

    这篇文章主要介绍了深入理解JVM之Class类文件结构,结合实例形式详细分析了Class类文件结构相关概念、原理、结构、常用方法与属性,需要的朋友可以参考下
    2019-09-09
  • java数据结构之插入排序

    java数据结构之插入排序

    这篇文章主要为大家详细介绍了java数据结构之插入排序的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • java编程实现求解八枚银币代码分享

    java编程实现求解八枚银币代码分享

    这篇文章主要介绍了java编程实现求解八枚银币代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • java仿微信摇一摇实现播放音乐

    java仿微信摇一摇实现播放音乐

    这篇文章主要为大家详细介绍了java仿微信摇一摇实现播放音乐,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 解决Java中由于数据太大自动转换成科学计数法的问题

    解决Java中由于数据太大自动转换成科学计数法的问题

    今天小编就为大家分享一篇解决Java中由于数据太大自动转换成科学计数法的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论