网站建设财务分析,东莞横沥地图,网站建设预算模板,软件产品开发流程图转载自 Spring MVC竟然有5种参数绑定的方式#xff1f;你知道几种#xff1f; SpringMVC参数绑定#xff0c;简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上#xff0c;然后就可以在controller中使用该参数了下面通过5个常用的注解演示下如何进行参…转载自 Spring MVC竟然有5种参数绑定的方式你知道几种
SpringMVC参数绑定简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上然后就可以在controller中使用该参数了下面通过5个常用的注解演示下如何进行参数绑定
1. PathVariable注解
PathVariable 是用来获得请求url中的动态参数的可以将URL中的变量映射到功能处理方法的参数上其中URL 中的 {xxx} 占位符可以通过PathVariable(“xxx“) 绑定到操作方法的入参中。
示例代码 ResponseBodyRequestMapping(/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发送请求截图 发送请求截图
输出结果
通过PathVariable获取的参数param11通过PathVariable获取的参数param222.RequestHeader注解
RequestHeader 注解可以把Request请求header部分的值绑定到方法的参数上。
示例代码 ResponseBodyRequestMapping(/testHeaderParam)public void testHeaderParam(HttpServletRequest request, RequestHeader String param1) {System.out.println(通过RequestHeader获取的参数param1 param1);}
Postman发送请求截图 发送请求截图
输出结果
通过RequestHeader获取的参数param1abc3.CookieValue注解
CookieValue 可以把Request header中关于cookie的值绑定到方法的参数上。
示例代码 ResponseBodyRequestMapping(/testCookieParam)public void testCookieParam(HttpServletRequest request, HttpServletResponse response,
CookieValue String sessionid) {System.out.println(通过CookieValue获取的参数sessionid sessionid);}
Postman发送请求截图 发送请求截图
输出结果
通过CookieValue获取的参数sessionidebef978eef6c46f8a95cc0990d2d360a4.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表示参数不传时候的默认值。
示例代码 ResponseBodyRequestMapping(/testRequestParam)public void testRequestParam(HttpServletRequest request,RequestParam(value num, required true, defaultValue 0) int num) {System.out.println(通过RequestParam获取的参数num num);}
Postman发送请求截图 输出结果
通过RequestParam获取的参数num105.RequestBody注解
RequestBody注解用来处理HttpEntity请求体传递过来的数据一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据
GET请求中因为没有HttpEntity所以RequestBody并不适用
POST请求中通过HttpEntity传递的参数必须要在请求头中声明数据的类型Content-TypeSpringMVC通过使用HandlerAdapter配置的HttpMessageConverters来解析HttpEntity中的数据然后绑定到相应的bean上。
示例代码 ResponseBodyRequestMapping(/testRequestBody)public void testRequestBody(HttpServletRequest request, RequestBody String bodyStr){System.out.println(通过RequestBody获取的参数bodyStr bodyStr);}
Postman发送请求截图 发送请求截图
代码运行结果
通过RequestBody获取的参数bodyStr这是body的内容作者Java碎碎念