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

发布时间 - 2026-01-11 02:19:01    点击率:

前言

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中传递对象参数示例详解  # 自定义  # 要对  # 这篇文章  # 错误信息  # 为空  # 我在  # 相关内容  # 能让  # 给大家  # 三种  # 实体类  # 为例  # 谢谢大家  # 哪种  # 比较多  # 第一条  # 转换为  # 很不  # 抛出  # 主要是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python函数文档自动校验_规范解析【教程】  Laravel怎么在Controller之外的地方验证数据  网站制作软件免费下载安装,有哪些免费下载的软件网站?  制作电商网页,电商供应链怎么做?  详解jQuery中基本的动画方法  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel怎么实现验证码(Captcha)功能  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  🚀拖拽式CMS建站能否实现高效与个性化并存?  Laravel distinct去重查询_Laravel Eloquent去重方法  制作企业网站建设方案,怎样建设一个公司网站?  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  JavaScript如何实现继承_有哪些常用方法  重庆市网站制作公司,重庆招聘网站哪个好?  微信小程序 scroll-view组件实现列表页实例代码  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  怎样使用JSON进行数据交换_它有什么限制  Laravel如何为API编写文档_Laravel API文档生成与维护方法  如何在VPS电脑上快速搭建网站?  EditPlus 正则表达式 实战(3)  C#如何调用原生C++ COM对象详解  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  JavaScript如何操作视频_媒体API怎么控制播放  php json中文编码为null的解决办法  如何在建站主机中优化服务器配置?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  Laravel如何发送系统通知?(Notification渠道示例)  如何用y主机助手快速搭建网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  企业网站制作这些问题要关注  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  黑客如何通过漏洞一步步攻陷网站服务器?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  独立制作一个网站多少钱,建立网站需要花多少钱?  网站图片在线制作软件,怎么在图片上做链接?  JavaScript如何实现错误处理_try...catch如何捕获异常?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  什么是javascript作用域_全局和局部作用域有什么区别?  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  b2c电商网站制作流程,b2c水平综合的电商平台?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何用免费手机建站系统零基础打造专业网站?