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

  

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

  

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

  

比如一个请求方法是:公共字符串登录(用户用户),用户。java类里有名称和密码两个参数和获?设置方法

  

那么请求http://localhost: 8080/登录# 63;名=admin&密码=123456是完全没问题的

  

<>强自动装箱理解
  

  

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

  

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

  

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

  

<>强自动装箱的缺点
  

  

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

  

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

  

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

  

<强>文章请求的自动装箱
  

  

文章请求的参数,一般都加上注解@RequestBody,但是上例中字符串的公共登录(用户用户)方法即使使用后请求,依然是可以执行的

  

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

  

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

  

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

  

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

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