全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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是我在项目中经常使用的注解

总结

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


# spring  # 参数传递  # spring传递list参数  # springmvc的参数传递  # Spring MVC 学习 之 - URL参数传递详解  # spring MVC中传递对象参数示例详解  # 自定义  # 要对  # 这篇文章  # 错误信息  # 为空  # 我在  # 相关内容  # 能让  # 给大家  # 三种  # 实体类  # 为例  # 谢谢大家  # 哪种  # 比较多  # 第一条  # 转换为  # 很不  # 抛出  # 主要是 


相关文章: 宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  南宁网站建设制作定制,南宁网站建设可以定制吗?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何通过多用户协作模板快速搭建高效企业网站?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  东莞专业制作网站的公司,东莞大学生网的网址是什么?  建站之星展会模板:智能建站与自助搭建高效解决方案  网站制作企业,网站的banner和导航栏是指什么?  如何通过山东自助建站平台快速注册域名?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何在阿里云虚拟主机上快速搭建个人网站?  建站之星如何实现PC+手机+微信网站五合一建站?  C++如何使用std::optional?(处理可选值)  南京网站制作费用,南京远驱官方网站?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  中山网站制作网页,中山新生登记系统登记流程?  建站之星如何实现五合一智能建站与营销推广?  网站制作壁纸教程视频,电脑壁纸网站?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  公司门户网站制作流程,华为官网怎么做?  建站主机选择指南:服务器配置与SEO优化实战技巧  专业网站建设制作报价,网页设计制作要考什么证?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何在VPS电脑上快速搭建网站?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  重庆市网站制作公司,重庆招聘网站哪个好?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  网站图片在线制作软件,怎么在图片上做链接?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  如何在西部数码注册域名并快速搭建网站?  Thinkphp 中 distinct 的用法解析  安云自助建站系统如何快速提升SEO排名?  微信小程序 五星评分(包括半颗星评分)实例代码  建站之星3.0如何解决常见操作问题?  公司网站的制作公司,企业网站制作基本流程有哪些?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  建站之星安装步骤有哪些常见问题?  如何通过FTP服务器快速搭建网站?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  网站制作新手教程,新手建设一个网站需要注意些什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。