欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMVC参数绑定,这篇就够了!

程序员文章站 2022-08-11 15:22:22
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行参数绑定: 1. @PathVariable注解 @PathVariable 是用来获得请求url中 ......

springmvc参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了

下面通过5个常用的注解演示下如何进行参数绑定:

1. @pathvariable注解

@pathvariable 是用来获得请求url中的动态参数的,可以将url中的变量映射到功能处理方法的参数上,其中url 中的 {xxx} 占位符可以通过@pathvariable(“xxx“) 绑定到操作方法的入参中。

示例代码:
    @responsebody
    @requestmapping("/testurlpathparam/{param1}/{param2}")
    public void testurlpathparam(httpservletrequest request, @pathvariable string param1,
                                 @pathvariable string param2) {
        system.out.println("通过pathvariable获取的参数param1=" + param1);
        system.out.println("通过pathvariable获取的参数param2=" + param2);
    }

postman发送请求截图:

SpringMVC参数绑定,这篇就够了!发送请求截图
输出结果:

通过pathvariable获取的参数param1=1
通过pathvariable获取的参数param2=2

2.@requestheader注解

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

示例代码:
    @responsebody
    @requestmapping("/testheaderparam")
    public void testheaderparam(httpservletrequest request, @requestheader string param1) {
        system.out.println("通过requestheader获取的参数param1=" + param1);
    }

postman发送请求截图:

SpringMVC参数绑定,这篇就够了!发送请求截图

输出结果:

通过requestheader获取的参数param1=abc

3.@cookievalue注解

@cookievalue 可以把request header中关于cookie的值绑定到方法的参数上。

示例代码:
    @responsebody
    @requestmapping("/testcookieparam")
    public void testcookieparam(httpservletrequest request, httpservletresponse response,
                                  @cookievalue string sessionid) {
        system.out.println("通过cookievalue获取的参数sessionid=" + sessionid);
    }

postman发送请求截图:

SpringMVC参数绑定,这篇就够了!发送请求截图

输出结果:

通过cookievalue获取的参数sessionid=ebef978eef6c46f8a95cc0990d2d360a

4.@requestparam注解

@requestparam注解用来处理content-type: 为 application/x-www-form-urlencoded编码的内容。提交方式为get或post。(http协议中,form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded);

@requestparam注解实质是将request.getparameter() 中的key-value参数map利用spring的转化机制conversionservice配置,转化成参数接收对象或字段,
get方式中querystring的值,和post方式中body data的值都会被servlet接受到并转化到request.getparameter()参数集中,所以@requestparam可以获取的到;

该注解有三个属性: value、required、defaultvalue; value用来指定要传入值的id名称,required用来指示参数是否必录,defaultvalue表示参数不传时候的默认值。

示例代码:
    @responsebody
    @requestmapping("/testrequestparam")
    public void testrequestparam(httpservletrequest request,
                                   @requestparam(value = "num", required = true, defaultvalue = "0") int num) {
        system.out.println("通过requestparam获取的参数num=" + num);
    }

postman发送请求截图:

SpringMVC参数绑定,这篇就够了!

输出结果:

通过requestparam获取的参数num=10

5.@requestbody注解

@requestbody注解用来处理httpentity(请求体)传递过来的数据,一般用来处理非content-type: application/x-www-form-urlencoded编码格式的数据;

get请求中,因为没有httpentity,所以@requestbody并不适用;

post请求中,通过httpentity传递的参数,必须要在请求头中声明数据的类型content-type,springmvc通过使用handleradapter配置的httpmessageconverters来解析httpentity中的数据,然后绑定到相应的bean上。

示例代码:
    @responsebody
    @requestmapping("/testrequestbody")
    public void testrequestbody(httpservletrequest request, @requestbody string bodystr){
        system.out.println("通过requestbody获取的参数bodystr=" + bodystr);
    }

postman发送请求截图:

SpringMVC参数绑定,这篇就够了!发送请求截图

代码运行结果:

通过requestbody获取的参数bodystr=这是body的内容

推荐阅读
1.springcloud系列-整合hystrix的两种方式)
2.springcloud系列-利用feign实现声明式服务调用)
3.手把手带你利用ribbon实现客户端的负载均》
4.springcloud搭建注册中心与服务注册
5.spring boot配置过滤器的两种方式!


限时领取免费java相关资料,涵盖了java、redis、mongodb、mysql、zookeeper、spring cloud、dubbo/kafka、hadoop、hbase、flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:

SpringMVC参数绑定,这篇就够了!java碎碎念公众号