@Responsebody与@RequestBody
预备知识:@RequestMapping
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
@RequestMapping(value = "/aaa")//类级别,可以没有
public class myController {
@RequestMapping(value = "/bbb")//方法级别,必须有
public String getMyName() {
return "myReturn";
}
}
对应的action就是:<form action="aaa/bbb">
返回页面就是myReturn.jsp
@Responsebody与@RequestBody
@Responsebody表示该方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,
加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。
比如异步获取json数据,加上@Responsebody后,会直接返回json数据。
@RequestBody将HTTP请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。
function login() {//页面异步请求
var mydata = '{"name":"' + $('#name').val() + '","id":"'
+ $('#id').val() + '","status":"' + $('#status').val() + '"}';
$.ajax({
type : 'POST',
contentType : 'application/json',
url : "${pageContext.request.contextPath}/person/login",
processData : false,
dataType : 'json',
data : mydata,
success : function(data) {
alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
+ data.status);
},
error : function() {
alert('出错了!');
}
});
};
@RequestMapping(value = "person/login")
@ResponseBody
public Person login(@RequestBody Person person) {//将请求中的mydata写入Person对象中
return person;//不会被解析为跳转路径,而是直接写入HTTP response body中
}
扩展:@PathVariable获取请求路径变量
function profile() {
var url = "${pageContext.request.contextPath}/person/profile/";
var query = $('#id').val() + '/' + $('#name').val() + '/'
+ $('#status').val();
url += query;
$.get(url, function(data) {
alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "
+ data.status);
});
}
@RequestMapping(value = "person/profile/{id}/{name}/{status}")
@ResponseBody
public Person porfile(@PathVariable int id,@PathVariable String name,@PathVariable boolean status) {
return new Person(id, name, status);
}
//@RequestMapping(value = "/person/profile/{id}/{name}/{status}")中的{id}/{name}/{status}与@PathVariable int id, @PathVariable String name,@PathVariable boolean status一一对应,按名匹配。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
zabbix自动化线上实战--Zabbix lld发现磁盘监控
Zabbix3.0入门到生产环境应用实战: http://www.roncoo.com/course/view/fb3050a5b34b42f39ccad83ebebc89c1 一、软件版本 操作系统:CentOS-6.5-x86_64 zabbix版本:3.0.3 二、脚本编写: 1、python版本: #!/usr/bin/env python import json import subprocess def get_disk(): cmd = """grep -E "(vd[a-z]$|sd[a-z]$)" /proc/partitions|awk '{print $4}'""" disk_data = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) disk_total = [] disktotal_dict = {"data":None} for dev in disk_data.stdout.readlines(): disk_dic...
- 下一篇
6个月清洗近千亿条微信支付交易记录,他们要搞什么大事情?[转]
2013年8月,微信红包上线。2014年春节微信红包引爆社交支付。2015年春晚红包摇一摇,推动微信红包在全国迅速普及。此后,每逢节假日或特殊日子,人们都会自主的兴起发红包,使微信红包成为热点。微信红包的火热带动微信支付的迅猛发展,按当时的发展速度预估,到2015年底,每天的微信支付交易记录会达到20亿。而原有的用户交易记录存储系统无法承受业务迅猛发展带来的冲击,一些瓶颈逐渐凸显出来。本文将就:微信支付背后的交易记录系统的重构优化历程进行一次全面的呈现。 历年春节红包收发总量 老交易系统面临的问题: 由于老的交易记录存储系统是采用key/value的方式存储用户数据,每个用户的所有交易记录存储在一个value中,随着用户交易数据的不断增长,单个value数据会不断变大,最终单个value的20M上限会导致用户新增数据无法写入。 老系统将交易记录的写入流程放在了支付的关键路径上,然而,从整个支付业务场景来看,交易记录应该属于用户支付后的应用场景(如:查看交易详情、确认交易状态等)。所以将交易记录写入流程与支付关键路径解耦合能优化提升支付的效率和体验。 老系统中交易记录的种类不全:这里的主...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能