Spring中@RequestParam使用及遇到的一些坑

目录
  • 加与不加的区别
  • 使用RequestParam遇到的一些坑(总结)
  • 总结

加与不加的区别

@RequestMapping("/list1")
public String test1(int userId) {
  return "list";
}
@RequestMapping("/list2")
public String test2(@RequestParam int userId) {
  return "list";
}

(1)不加@RequestParam前端的参数名需要和后端控制器的变量名保持一致才能生效

(2)不加@RequestParam参数为非必传,加@RequestParam写法参数为必传。但@RequestParam可以通过@RequestParam(required = false)设置为非必传。

(3)@RequestParam可以通过@RequestParam(“userId”)或者@RequestParam(value = “userId”)指定传入的参数名。

(4)@RequestParam可以通过@RequestParam(defaultValue = “0”)指定参数默认值

(5)如果接口除了前端调用还有后端RPC调用,则不能省略@RequestParam,否则RPC会找不到参数报错

(6)访问时:

  • 不加@RequestParam注解:url可带参数也可不带参数,输入 localhost:8080/list1 以及 localhost:8080/list1?userId=xxx 方法都能执行
  • 加@RequestParam注解:url必须带有参数。也就是说你直接输入localhost:8080/list2 会报错,不会执行方法。只能输入localhost:8080/list2?userId=xxx 才能执行相应的方法

使用RequestParam遇到的一些坑(总结)

@RequestParam有三个常用的注解:

value:表示前端传到后端时,变量的名称。(例如:前端传到后端的参数:userName="Tom",那么@RequestParam(value = "userName") String xxx)

required: boolean类型,值为true/false。需要特别注意:required参数的意思其实更接近于在前端传递到后端的参数中,是否包含这个参数。什么意思呢?比如@RequestParam(value = "userName", required = true) String xxx),你传userName=""是可以通过验证的,即可以required = true并不杜绝传递空值,只是验证传递的参数中是否含有userName。所以检验参数的合法性一般还需要自行处理。

defaultValue: 为参数赋一个默认值。 需要特别注意:如果设置了defaultValue,required设置将会失效,所以如果设置了defaultValue,就没必要设置required了。

总结

到此这篇关于Spring中@RequestParam使用及遇到的一些坑的文章就介绍到这了,更多相关Spring @RequestParam使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring的@RequestParam对象绑定方式

    目录 Spring @RequestParam对象绑定 解决方案 在POJO中对请求参数进行校验 SpringMvc参数绑定自定义对象 json提交 form提交 小结一下 Spring @RequestParam对象绑定 在Spring中,如果在方法参数列表中使用@RequestParam标注多个参数,会让映射方法的可读性大大降低. 如果映射请求的参数只有一两个的话,使用@RequestParam会非常直观,但是如果参数列表越来越长,就很容易晕菜. 解决方案 可以直接使用ParameterOb

  • 浅谈@RequestParam 参数是否必须传的问题

    一.源码展示 @Target(ElementType.PARAMETER) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestParam { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolea

  • 关于@RequestParam注解的使用(简单易懂)

    目录 @RequestParam注解使用 1.作用 2.语法 3.测试环境 4.工程结构 5.业务处理器HelloController.java 6.测试 @RequestParam与@Param区别 @RequestParam注解使用 1.作用 @RequestParam:将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解) 2.语法 语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””

  • Spring中@RequestParam使用及遇到的一些坑

    目录 加与不加的区别 使用RequestParam遇到的一些坑(总结) 总结 加与不加的区别 @RequestMapping("/list1") public String test1(int userId) { return "list"; } @RequestMapping("/list2") public String test2(@RequestParam int userId) { return "list"; }

  • Spring中使用自定义ThreadLocal存储导致的坑及解决

    目录 Spring自定义ThreadLocal存储导致的坑 一个容易想到的实现办法是使用ThreadLocal Threadlocal可能会产生内存泄露的问题及原理 为什么会产生内存泄露? JVM解决的办法 Spring自定义ThreadLocal存储导致的坑 Spring 中有时候我们需要存储一些和 Request 相关联的变量,例如用户的登陆有关信息等,它的生命周期和 Request 相同. 一个容易想到的实现办法是使用ThreadLocal public class SecurityCon

  • Spring Boot中@RequestParam参数的5种情况说明

    目录 Spring Boot中@RequestParam参数的5种情况 实例如下: Spring Boot注解:@RequestParam详解 1.value:参数名字,即入参的请求参数名字 ​2.required:该参数是否为必传项. ​3.defaultValue:参数的默认值 Spring Boot中@RequestParam参数的5种情况 实例如下: // 可带参数可不带参数,方法都能执行 @RequestMapping("/list") public String test1

  • 快速理解spring中的各种注解

    Spring中的注解大概可以分为两大类: 1)spring的bean容器相关的注解,或者说bean工厂相关的注解: 2)springmvc相关的注解. spring的bean容器相关的注解,先后有:@Required, @Autowired, @PostConstruct, @PreDestory,还有Spring3.0开始支持的JSR-330标准javax.inject.*中的注解(@Inject, @Named, @Qualifier, @Provider, @Scope, @Singlet

  • 在spring中手写全局异常拦截器

    为什么要重复造轮子 你可能会问,Spring已经自带了全局异常拦截,为什么还要重复造轮子呢? 这是个好问题,我觉得有以下几个原因 装逼 Spring的全局异常拦截只是针对于Spring MVC的接口,对于你的RPC接口就无能为力了 无法定制化 除了写业务代码,我们其实还能干点别的事 我觉得上述理由已经比较充分的解答了为什么要重复造轮子,接下来就来看一下怎么造轮子 造个什么样的轮子? 我觉得全局异常拦截应该有如下特性 使用方便,最好和spring原生的使用方式一致,降低学习成本 能够支持所有接口

  • Spring中的PathVariable注释解析

    目录 Spring的PathVariable注释 例子 多个@PathVariable批注 @PathVariable vs @RequestParam结论 使用@PathVariable的坑 发现问题 解决过程 解决方案 Spring的PathVariable注释 就像@RequestParam一样,@PathVariable批注用于从HTTP request中提取数据.但是,它们略有不同.区别在于@RequestParam从URL获取参数,而@PathVariable只是从URI中提取参数.

  • 一文搞懂Spring中的注解与反射

    目录 前言 一.内置(常用)注解 1.1@Overrode 1.2@RequestMapping 1.3@RequestBody 1.4@GetMapping 1.5@PathVariable 1.6@RequestParam 1.7@ComponentScan 1.8@Component 1.9@Service 1.10@Repository 二.元注解 @Target @Retention @Documented @Inherited 三.自定义注解 四.反射机制概述 4.1动态语言与静态语

  • Spring/SpringBoot @RequestParam注解无法读取application/json格式数据问题解决

    目录 前言 一.RequestMappingHandlerAdapter 二.HandlerMethodArgumentResolver 三.RequestParamMethodArgumentResolver 四.MyHandlerMethodArgumentResolver 四.ConfigArgumentResolvers 五.MyHttpServletRequestWrapper 六.HttpServletRequestReplacedFilter 七.总结 总结 前言 Emmmm…最近

  • 详解Spring 中如何控制2个bean中的初始化顺序

    开发过程中有这样一个场景,2个 bean 初始化逻辑中有依赖关系,需要控制二者的初始化顺序.实现方式可以有多种,本文结合目前对 Spring 的理解,尝试列出几种思路. 场景 假设A,B两个 bean 都需要在初始化的时候从本地磁盘读取文件,其中B加载的文件,依赖A中加载的全局配置文件中配置的路径,所以需要A先于B初始化,此外A中的配置改变后也需要触发B的重新加载逻辑,所以A,B需要注入彼此. 对于下面的模型,问题简化为:我们需要initA()先于initB()得到执行. @Service pu

随机推荐