@RequestParam、@RequestBody、@PathVariable三者的区别

@RequestParam

接收的参数是来自requestHeader,即请求头中
@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性。

例子

@RequestMapping("/testRequestParam")
//name属性解决前后端参数名称不一致问题,把jsp页面传递过来的name属性赋值给username。
    public String testRequestParam(@RequestParam(name="name") String username){
        System.out.println(username);
        return "success";
    }

jsp页面

<a href="anno/testRequestParam?name=哈哈">RequestParam</a>

@RequestBody

接收的参数是来自requestBody,即请求体中。可以解析Body中json格式的数据。一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,比如:application/json、application/xml等类型的数据。
用于获取请求体的内容 key = value格式。get请求不适用。因为get方式没有请求体,它把内容都封装到地址栏了。
例子

/**
     * 获取到请求体的内容
     * @return
     */
    @RequestMapping("/testRequestBody")
    public String testRequestBody(@RequestBody String body){
        System.out.println(body);
        return "success";
    }

jsp表单

<form action="anno/testRequestBody" method="post">
        用户姓名:<input type="text" name="username" /><br/>
        用户年龄:<input type="text" name="age" /><br/>
        <input type="submit" value="提交" />
    </form>

输出结果(结果会以字符串的方式输出)
在这里插入图片描述

@PathVariable

接收请求路径中占位符的值。用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url 占位符
例子

/**
     * PathVariable注解
     * @return
     */
    @RequestMapping(value="/testPathVariable/{sid}")
    public String testPathVariable(@PathVariable(name="sid") String id){
        System.out.println(id);
        return "success";
}
注意 :参数名sid必须保持一致

jsp链接

<a href="anno/testPathVariable/10">testPathVariable</a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值