当前位置: 移动技术网 > IT编程>开发语言>Java > SpringMvc自动装箱及GET请求参数原理解析

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

2020年09月20日  | 移动技术网IT编程  | 我要评论
在我的概念里边,get请求需要加上注解@requestparam,然后它的参数类型只能是 基本数据类型 或者 基本数据类型的包装类,比如:@requestparam string name(默认是必传

在我的概念里边,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"}

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网