RequestParam和 RequestBody

style="text-indent:2em;">大家好,今天来为大家分享requestparam可以省略属性名的是的一些知识点,和不建议用requestparam注解的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

本文目录

  1. postman报文格式有哪些
  2. spring实现多参数入参方式有几种
  3. requestparam可以省略属性名的是
  4. springmvc中@PathVariable和@RequestParam的区别

postman报文格式有哪些

参数中有基本数据类型还有list集合类型

publicStringaddUserRole(@RequestParam("userId")LonguserId,

@RequestBodyList<Long>roleIdList)

2.参数中有基本数据类型,还有Map<Long,List<Long>>这种类型

addRolePermission(@RequestParam("roleId")LongroleId,

@RequestBodyMap<Long,List<Long>>metaMap)

spring实现多参数入参方式有几种

1.通过@PathVariable、@RequestParam注解接收参数

2.通过@RequestBody注解接收参数

3.不使用任何注解,直接使用参数或者实体类接收参数

requestparam可以省略属性名的是

当注解@RequestMapping的value是其唯一属性时,可以省略属性名

springmvc中@PathVariable和@RequestParam的区别

1、@PathVariable

当使用@RequestMappingURItemplate样式映射时,即someUrl/{paramId},这时的paramId可通过@Pathvariable注解绑定它传过来的值到方法的参数上。

示例代码:

@Controller

@RequestMapping("/owners/{ownerId}")

publicclassRelativePathUriTemplateController{

@RequestMapping("/pets/{petId}")

publicvoidfindPet(@PathVariableStringownerId,@PathVariableStringpetId,Modelmodel){

//implementationomitted

}

}

上面代码把URItemplate中变量ownerId的值和petId的值,绑定到方法的参数上。若方法参数名称和需要绑定的uritemplate中变量名称不一致,需要在@PathVariable("name")指定uritemplate中的名称。

2、@RequestHeader、@CookieValue

@RequestHeader注解,可以把Request请求header部分的值绑定到方法的参数上。

示例代码:

这是一个Request的header部分:

Hostlocalhost:8080

Accepttext/html,application/xhtml+xml,application/xml;q=0.9

Accept-Languagefr,en-gb;q=0.7,en;q=0.3

Accept-Encodinggzip,deflate

Accept-CharsetISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive300

@RequestMapping("/displayHeaderInfo.do")

publicvoiddisplayHeaderInfo(@RequestHeader("Accept-Encoding")Stringencoding,

@RequestHeader("Keep-Alive")longkeepAlive){

}

上面的代码,把requestheader部分的Accept-Encoding的值,绑定到参数encoding上了,Keep-Aliveheader的值绑定到参数keepAlive上。

@CookieValue可以把Requestheader中关于cookie的值绑定到方法的参数上。

例如有如下Cookie值:

JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84

参数绑定的代码:

@RequestMapping("/displayHeaderInfo.do")

publicvoiddisplayHeaderInfo(@CookieValue("JSESSIONID")Stringcookie){

}

即把JSESSIONID的值绑定到参数cookie上。

3、@RequestParam,@RequestBody

@RequestParam

A)常用来处理简单类型的绑定,通过Request.getParameter()获取的String可直接转换为简单类型的情况(String-->简单类型的转换操作由ConversionService配置的转换器来完成);因为使用request.getParameter()方式获取参数,所以可以处理get方式中queryString的值,也可以处理post方式中bodydata的值;

B)用来处理Content-Type:为application/x-www-form-urlencoded编码的内容,提交方式GET、POST;

C)该注解有两个属性:value、required;value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

示例代码:

@Controller

@RequestMapping("/pets")

@SessionAttributes("pet")

publicclassEditPetForm{

@RequestMapping(method=RequestMethod.GET)

publicStringsetupForm(@RequestParam("petId")intpetId,ModelMapmodel){

Petpet=this.clinic.loadPet(petId);

model.addAttribute("pet",pet);

return"petForm";

}

@RequestBody

该注解常用来处理Content-Type:不是application/x-www-form-urlencoded编码的内容,例如application/json,application/xml等;

它是通过使用HandlerAdapter配置的HttpMessageConverters来解析postdatabody,然后绑定到相应的bean上的。

因为配置有FormHttpMessageConverter,所以也可以用来处理application/x-www-form-urlencoded的内容,处理完的结果放在一个MultiValueMap<String,String>里,这种情况在某些特殊需求下使用,详情查看FormHttpMessageConverterapi;

关于requestparam可以省略属性名的是,不建议用requestparam注解的介绍到此结束,希望对大家有所帮助。

RequestBody 和 RequestParam