SpringMvc自动装箱及GET请求参数原理解析

 更新时间:2020年09月19日 10:01:41   作者:贾树丙  
这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

在我的概念里边,GET请求需要加上注解@RequestParam,然后它的参数类型只能是 基本数据类型 或者 基本数据类型的包装类,比如:@RequestParam String name(默认是必传的),也可以不加@RequestParam 注解,其实就相当于@RequestParam(required = false)

但是参数类型竟然是自定义对象,对象类里有不同的参数和get/set方法,而且没有使用@RequestParam 注解,那么同样也能实现GET请求

比如一个请求方法是:public String login(User user) ,User.java类里有name 和password 两个参数和get/set方法

那么请求http://localhost:8080/login?name=admin&password=123456是完全没问题的

自动装箱理解

对Java自动装箱、拆箱的理解是:装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

对于springmvc来说,感觉它的自动装箱,是将多个一般类型的参数转换成一个对象,并赋值到对象里的变量

那么这样的请求参数如何限制是否必传呢?这里可没有(required = true),那就需要使用@Valid注解了

自动装箱的缺点

1、自动装箱最直接的缺点就是效率低,不解释

2、我们知道url请求会放到RequestHeader 里,这个应该是有长度限制的,那么太长了肯定不合适。如果是POST请求的话,会放到RequestBody里面去,就不会有RequestHeader 过长的问题了

3、如果对象里放的是List 类型的参数,那么这个应该如何在url 里进行GET请求呢?我问老大,他说要避免这种情形,使用JSON格式

POST请求的自动装箱

POST请求的参数,一般都加上注解@RequestBody,但是上例中的public String login(User user) 方法即使使用POST请求,依然是可以执行的

网上搜了下么springmvc在post请求时使用与不使用@RequestBody注解的区别?

不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111bbb=222。form表单提交以及jQuery的.post()方法所发送的请求就是这种类型。

使用@RequestBody注解时,用于接收Content-Type为application/json类型的请求,数据类型是JSON:{"aaa":"111","bbb":"222"}

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

相关文章

  • Spring整合Mybatis方式之注册映射器

    Spring整合Mybatis方式之注册映射器

    这篇文章主要介绍了Spring整合Mybatis方式之注册映射器,MapperFactoryBean注册映射器的最大问题,就是需要一个个注册所有的映射器,而实际上mybatis-spring提供了扫描包下所有映射器接口的方法,每种方式给大家介绍的非常详细,需要的朋友参考下吧
    2024-03-03
  • Spring AOP手动实现简单动态代理的代码

    Spring AOP手动实现简单动态代理的代码

    今天小编就为大家分享一篇关于Spring AOP手动实现简单动态代理的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java源码解析之Iterable接口

    Java源码解析之Iterable接口

    遍历集合我相信大部分coder都会遇到,也经常使用,而Java给我们提供了多种选择,接下来就让我们一起来看看吧,需要的朋友可以参考下
    2021-05-05
  • Java读取properties文件之中文乱码问题及解决

    Java读取properties文件之中文乱码问题及解决

    这篇文章主要介绍了Java读取properties文件之中文乱码问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Java三种求水仙花数的方法

    Java三种求水仙花数的方法

    本篇文章通过求水仙花数的实例来让大家对JAVA求数的概念和方法有更深入的理解和应用,学习参考下吧。
    2018-02-02
  • 带你快速搞定java多线程(3)

    带你快速搞定java多线程(3)

    这篇文章主要介绍了java多线程编程实例,分享了几则多线程的实例代码,具有一定参考价值,加深多线程编程的理解还是很有帮助的,需要的朋友可以参考下
    2021-07-07
  • 一文吃透Spring集成MyBatis

    一文吃透Spring集成MyBatis

    spring能集成很多的框架,是spring一个优势功能,通过集成功能,让开发人员使用其他框架更方便,本文将给大家详细介绍Spring如何集成MyBatis,,需要的朋友可以参考下
    2023-05-05
  • 详解Mybatis中的PooledDataSource

    详解Mybatis中的PooledDataSource

    这篇文章主要介绍了详解Mybatis中的PooledDataSource,PooledDataSource使用了数据库连接池可以实现数据库连接池的重复利用,还能控制连接数据库的连接上限
    2022-06-06
  • 在Spring Boot中启用HTTPS的方法

    在Spring Boot中启用HTTPS的方法

    本文介绍了在Spring Boot项目中启用HTTPS的步骤,从生成SSL证书开始,到配置Spring Boot。HTTPS是保护Web应用程序安全的基石之一,而Spring Boot则提供了相对简易的途径来配置它,感兴趣的朋友跟随小编一起看看吧
    2024-02-02
  • SpringCloud使用Kafka Streams实现实时数据处理

    SpringCloud使用Kafka Streams实现实时数据处理

    使用Kafka Streams在Spring Cloud中实现实时数据处理可以帮助我们构建可扩展、高性能的实时数据处理应用,Kafka Streams是一个基于Kafka的流处理库,本文介绍了如何在SpringCloud中使用Kafka Streams实现实时数据处理,需要的朋友可以参考下
    2024-07-07

最新评论