@reqeustBody @RequestParam @PathVariable 使用场景

本文深入解析SpringMVC框架中@RequestBody、@RequestParam及@PathVariable注解的使用场景与区别,涵盖不同HTTP请求方法与内容类型的应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@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";
	}
--------------------- 
作者:胡小海丶 
来源:优快云 
原文: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
前端可以使用以下方式向后端发送包含String类型的JSON格式变量的请求: 1. 使用XMLHttpRequest对象进行AJAX请求: ```javascript var xhr = new XMLHttpRequest(); var url = "your_backend_url"; var data = JSON.stringify({ yourStringVariable: "your_value" }); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { // 请求成功处理逻辑 console.log(xhr.responseText); } }; xhr.send(data); ``` 2. 使用fetch API进行请求: ```javascript var url = "your_backend_url"; var data = JSON.stringify({ yourStringVariable: "your_value" }); fetch(url, { method: "POST", headers: { "Content-Type": "application/json;charset=UTF-8", }, body: data, }) .then(function (response) { if (response.ok) { return response.text(); } else { throw new Error("Error: " + response.status); } }) .then(function (data) { // 请求成功处理逻辑 console.log(data); }) .catch(function (error) { // 请求失败处理逻辑 console.log(error); }); ``` 以上代码示例中,`your_backend_url` 是后端接口的URL,`yourStringVariable` 是后端接口接受的String类型变量名,"your_value" 是要发送的具体值。前端将该JSON对象转换为字符串后,在请求头中设置`Content-Type`为`application/json`,并将其作为请求体发送给后端。后端可以使用`@RequestBody`注解接收这个JSON格式的请求体,并将其转换为对应的对象。 请注意,以上示例仅展示了如何发送请求,并不涉及请求的完整错误处理和其他逻辑。在实际应用中,你可能需要根据接口的要求进行相应的配置和错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值