SpringMVC(3)——@PathVariable&@RequestBody
来源:互联网 发布:macbook装windows教程 编辑:程序博客网 时间:2024/04/30 21:48
背景:今天来分享一下@PathVariable&@RequestBody~~~
一、@PathVariable
作用:
映射URL绑定的占位符
带占位符的URL时Spring3.0新增的功能,该功能再SpringMVC向REST 目标挺进发展过程中具有里程碑的意义。
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中:URL中的{xxx}占位符可以通过@Path Variable("xxx")绑定道操作方法的入参中。
例子:
SpringMVCTest.java
index.jsp
二、@RequestBody
作用:
i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。
使用时机:
A) GET、POST方式提时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
B) PUT方式提交时, 根据request header Content-Type的值来判断:
application/x-www-form-urlencoded, 必须;
multipart/form-data, 不能处理;
其他格式, 必须;
说明:request的body部分的数据编码格式由header部分的Content-Type指定;
例子:
1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
2、通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
例如说以下情况:
$.ajax({ url:"/login", type:"POST", data:'{"userName":"admin","pwd","admin123"}', content-type:"application/json charset=utf-8", success:function(data){ alert("request success ! "); } });
@requestMapping("/login") public void login(@requestBody String userName,@requestBody String pwd){ System.out.println(userName+" :"+pwd); }
这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
String userName;
String pwd;
那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。
3、在一些特殊情况@requestBody也可以用来处理content-type类型为application/x-www-form-urlcoded的内容,只不过这种方式
不是很常用,在处理这类请求的时候,@requestBody会将处理结果放到一个MultiValueMap<String,String>中,这种情况一般在
特殊情况下才会使用,
例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式。
三、何为REST?
即Representational StateTransfer 。(资源)表现层状态转化。
(今天先分享到这里了~~~)
- SpringMVC(3)——@PathVariable&@RequestBody
- SpringMVC ——@ResponseBody,@RequestBody,@PathVariable
- SpringMVC —— @RequestParam @RequestBody @PathVariable 等参数绑定
- springmvc学习笔记(3)——pathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- Spring 注解学习手札(七) 补遗——@ResponseBody,@RequestBody,@PathVariable
- lucene5--创建索引
- 第一节综述
- hdu1003最长连续子序列和dp
- 各种区别
- 第四章 4.1无向图
- SpringMVC(3)——@PathVariable&@RequestBody
- leetcode 20 parenthesis match
- 通俗易懂的希尔排序
- azure 最佳实践4 --可水平扩展的设计
- 源码编译安装 MySQL 5.5.x 实践
- 第四章 4.2 有向图
- java 数据库 触发器
- 参考资料
- selenium + python 鼠标点击事件