Ajax和SpringMVC之间JSON交互
Ajax和SpringMVC之间的json数据传输有两种方式:
1.直接传输Json对象
2.将Json序列化成json字符串
1.直接传输Json对象
前端Ajax
$(document).ready(function(){
$("#btn_login").click(function(){
var dataJson = {
username:$("#username").val(),
password:$("#password").val()
};
$.ajax({
url:"/login/",
type:"post",
data:dataJson,
contentType:"application/x-www-form-urlencoded",//如不设置此项,默认也为此,设置发送给后端的类型
dataType:"json",//设置接收后端的数据的类型
async:true,//设置异步,不然可能接收不到后端返回的json
success:function(data){//data为后端返回的json
if(data.code==0){
window.location.reload();
}
else {
}
}
});
});
});
后端使用
@RequestMapping(path = {"/login/"}, method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpServletResponse response) {
try {
Map<String, Object> map = userService.login(username, password);
if (map.containsKey("ticket")) {
Cookie cookie = new Cookie("ticket", map.get("ticket").toString());
cookie.setPath("/");
response.addCookie(cookie);
//return "redirect:/";
return CommonUtil.getJSONString(0, "成功");
} else {
//return "redirect:/";
return CommonUtil.getJSONString(1, map);
}
} catch (Exception e) {
logger.error("登录异常" + e.getMessage());
//return "redirect:/";
return CommonUtil.getJSONString(1, "注册异常");
}
}
使用@RequestParam,即使用Servlet的request.getgetParameter。这种方式可以接受以application/x-www-form-urlencoded这种方式传输的JSON对象的。
2.将Json序列化
前端Ajax
$(document).ready(function(){
$("#btn_reg").click(function(){
var dataJson = {
username:$("#regusername").val(),
password:$("#regpassword").val()
};
$.ajax({
url:"/reg/",
type:"post",
contentType:"application/json",//以json字符串形式传输
data:JSON.stringify(dataJson),//将json对象序列化成字符串
dataType:"json",
async:true,
success:function(data){
if(data.code==0){
window.location.reload();
}
else {
}
}
});
});
});
后端Controller
@RequestMapping(path = {"/reg/"}, method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody
public String reg(@RequestBody User user,
HttpServletResponse response) {
try {
Map<String, Object> map = userService.register(user.getUsername(), user.getPassword());
if (map.containsKey("ticket")) {
Cookie cookie = new Cookie("ticket", map.get("ticket").toString());
cookie.setPath("/");
response.addCookie(cookie);
return CommonUtil.getJSONString(0, "注册成功");
} else {
return CommonUtil.getJSONString(1, map);
}
} catch (Exception e) {
logger.error("注册异常" + e.getMessage());
return CommonUtil.getJSONString(1, "注册异常");
}
}
@RequestBody中的user中,必须有与前端名称一致的属性,才可以接受到相应数据。
除此之外,@RequestBody还可用Map<String,Object> map来接收。
转载:https://my.oschina.net/u/3786691/blog/1823541
Ajax和SpringMVC之间JSON交互的更多相关文章
- springmvc实现json交互 -requestBody和responseBody
json数据交互 1.为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservice接口,传输json数据. 2. ...
- content-type常见类型辨析(以ajax与springmvc前后端交互为例)
博客搬家: content-type常见类型辨析(以ajax与springmvc前后端交互为例) 在http报文的首部中,有一个字段Content-type,表示请求体(entity body)中的数 ...
- SpringMVC之JSON交互
#什么是json? json是一种用于储存数据格式,是js脚本语言的子集. #json的作用? 它可以传递对象.数组等数据结构.如果是单个数据,则要用数组,不用对象,因为对象都是键值对的 方式去存储, ...
- SpringMVC的json交互
一.注解说明 1.@RequestBody 作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内 ...
- 使用Ajax向SpringMVC传递Json数据
这篇文章已经过时了. 请参考比较合适的前后端交互方式. 1.保证SpringMVC配置成功了. 2.在pom.xml中追加Jackson相关的依赖 <dependency> <gro ...
- springmvc之json交互406异常(Not Acceptable)和415异常(Unsupported Media Type)
一. 406异常(Not Acceptable) 1. 没有添加jackson-databind包2. 请求的url的后缀是*.html.在springmvc中如果请求的后缀是*.html的话,是不可 ...
- 使用ajax请求SpringMVC返回Json出现乱码解决方法
1:在使用ajax请求后台访问数据的数据,后台返回的数据是乱码,带??问号的乱码,之前还一直没有遇到过,在这里记录整理一下,贴出解决代码! (1):前台使用ajax ,已经设定返回的结果为json格式 ...
- 九 SpringMvc与json交互
将json输出到页面: 1 加入jar包 2 配置Controller层,开启注解ResponseBody,将json发送到页面: 3 访问url 4 响应json,在形参列表里面加上注解
- SpringMVC详解(六)------与json交互
Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛.那么这篇博客我们主要谈谈在 SpringMVC 中,如何对 json ...
随机推荐
- Centos修改系统语言
使用man page帮助时,发现居然是中文的,不过想想即便英语再水,也要逼着自己去适应.于是百度找了一下修改系统语言的方法. 首先使用 locale 命令查看当前的系统语言 然后修改时一般有两种方法, ...
- android 开发 出错
Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.Pr ...
- 《剑指offer》第三_二题(不修改数组找出重复的数字)
// 面试题3(二):不修改数组找出重复的数字 // 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至 // 少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改 ...
- YOLO V1论文理解
摘要 作者提出了一种新的物体检测方法YOLO.YOLO之前的物体检测方法主要是通过region proposal产生大量的可能包含待检测物体的 potential bounding box,再用分类器 ...
- R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)论文理解
论文地址:https://arxiv.org/pdf/1311.2524.pdf 翻译请移步: https://www.cnblogs.com/xiaotongtt/p/6691103.html ht ...
- 使用cocos创建的项目,如何进行源码调试?
环境cocos3.10,里面包含了cocos2dx 3.10引擎.但是用cocos创建出来的项目,使用的lib和dll是文件夹Cocos\Cocos2d-x\cocos2d-x-3.10\prebui ...
- CDS & ORF & 启动子 & 终止子 & 转录因子 & 基因结构 & UTR
ORF和CDS的区别 ORF的英文展开是open reading frame(开放阅读框). CDS的英文展开是coding sequences (编码区). CDS:DNA转录成mRNA,mRNA经 ...
- arcgis for silverlight 地图放大到某个点或者几何对象
http://blog.csdn.net/xuan444150/article/details/7727866 分类: silverlight王国 GIS王国 2012-07-09 08:50 1 ...
- English trip -- VC(情景课)10 A Get ready 预备课
Words dance 跳舞 exercise 运动:锻炼 fish 鱼 play basketball 打篮球 play cards 玩牌 swim 游泳 decorations 装饰品 ...
- python-day67--MTV之Template
一.什么是模板? html+模板语法 二.模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签. 三.嵌入变量的三种方式: def current_time(req): # ========= ...