@reqeustBody @RequestParam @PathVariable 使用场景

@reqeustBody

  • 常用来处理content-type==不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可 以将其分别绑定到对应的字符串上。
  • 在Get请求中,没有HttpEntity,所以@RequestBody并不适用
  • 在Post请求中,因为必须在请求头中申明Content-Type,则可以使用
 public void login(@requestBody String userName,@requestBody String pwd){
    
      System.out.println(userName+" :"+pwd);
      
    }
假如我有一个User类,拥有如下字段:
public class User {
        String userName;
        String pwd;
    }
那么上述参数可以改为以下形式
    public void login(@requestBody User user){
      
    }

这种形式会将JSON字符串中的值赋予user中对应的属性上

注意:JSON字符串中的key必须对应user中的属性名,否则是请求不过去的


@RequestParam

  • 请求处理的方法的参数的类型为Java基本类型和String.也可以接受对象类型
  • 常用来处理content-type为默认的application/x-www-form-urlcoded编码
属性类型是否必要说明
nameString指定请求参数绑定的名称
valueStringname属性的别名
requiredboolean指定参数是否必须绑定
defaultString没有参数时使用的默认值

@PathVariable

  • 只支持一个类型为String的属性,表示绑定的请求参数的名称,省略则默认绑定同名的参数。
  • 通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。
String edit(@PathVariable("orwModelid") String orwModelid,Model model){
		DataMastDO dataMast = dataMastService.get(orwModelid);
		model.addAttribute("dataMast", dataMast);
	    return "system/dataMast/edit";
	}
/**
	 * localhost:8080/springmvc/hello/pathVariable/bigsea
	 * localhost:8080/springmvc/hello/pathVariable/sea
	 * 这些URL 都会 执行此方法 并且将  <b>bigsea</b>、<b>sea</b> 作为参数 传递到name字段
	 * @param name
	 * @return
	 */
	@RequestMapping("/pathVariable/{name}")
	public String pathVariable(@PathVariable("name")String name){
		System.out.println("hello "+name);
		return "helloworld";
	}
--------------------- 
作者:胡小海丶 
来源:CSDN 
原文:https://blog.csdn.net/a67474506/article/details/46361195 
版权声明:本文为博主原创文章,转载请附上博文链接!

什么都不写,直接写参数

  • springmvc会自动根据参数名字来注入,所以要名字一致,不然不会注入

总结

  • @RequestBody @RequstParam @PathVariable
  • 在判断适用哪一个时,如下:
$.ajax({
		url:prefix + '/getUser',
		// 数据发送方式
		type: "post",
		// 接受数据格式
		dataType:"json",

		contentType: "application/json;charset=utf-8",
		// 要传递的数据
		data:JSON.stringify({'name':'a'}),
		// 回调函数,接受服务器端返回给客户端的值,即result值
		success:function(jsons){
		
		}
	})
  • Post
  • 判断contentType,是"application/json;charset=utf-8", 使用@ReuqestBody
  • 判断contentType,是“application/xml”,使用@RequestBody
  • 判断contentType,是“application/x-www-form-urlcoded”,使用@RequestParam
  • Get
  • 使用 @PathVariable
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@RequestBody和@RequestParam是Spring MVC中两个常用的注解,用于处理请求参数。 @RequestBody注解用于指定请求体的参数,通常用于接收Json格式的请求参数。它会将请求体中的数据反序列化为Java对象,并绑定到方法的参数上。这个注解在处理POST请求时常用。 @RequestParam注解用于指定请求参数的参数,通常用于接收URL参数或表单参数。它会从请求中获取指定名称的参数值,并绑定到方法的参数上。这个注解在处理GET请求时常用。 所以,@RequestBody适用于接收复杂的请求数据,而@RequestParam适用于接收简单的请求参数。 引用中的内容提供了关于这两个注解的详细说明。@RequestParam注解拥有value和name两个属性,用于指定参数的名称。它还有一个required属性,用于指定参数是否必选,默认为true。@RequestBody注解只有一个required属性,默认为true,表示请求体中的参数必须传递。 引用中的内容提供了对这两个注解的更加详细的解释和使用示例。 需要注意的是,GET请求通常不适合使用@RequestBody注解,因为GET请求的参数会附加在URL上,有长度限制。而@RequestBody适用于处理POST请求中的请求体参数。 希望以上回答对您有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [@RequestBody @RequestParam使用介绍](https://blog.csdn.net/zzhuan_1/article/details/102458004)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [@RequestParam和@RequestBody使用](https://blog.csdn.net/lijingjingchn/article/details/116166442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值