Ajax和SpringMVC之间JSON交互

Ajax和SpringMVC之间的json数据传输有两种方式:

1.直接传输Json对象

2.将Json序列化成json字符串

1.直接传输Json对象

前端Ajax

1$(document).ready(function(){ 2 $("#btn_login").click(function(){ 3 var dataJson = { 4 username:$("#username").val(), 5 password:$("#password").val() 6 }; 7 $.ajax({ 8 url:"/login/", 9 type:"post", 10 data:dataJson, 11 contentType:"application/x-www-form-urlencoded",//如不设置此项,默认也为此,设置发送给后端的类型 12 dataType:"json",//设置接收后端的数据的类型 13 async:true,//设置异步,不然可能接收不到后端返回的json 14 success:function(data){//data为后端返回的json 15 if(data.code==0){ 16 window.location.reload(); 17 } 18 else { 19 20 } 21 } 22 }); 23 }); 24});

后端使用

1@RequestMapping(path = {"/login/"}, method = {RequestMethod.GET, RequestMethod.POST}) 2 @ResponseBody 3 public String login(@RequestParam("username") String username, 4 @RequestParam("password") String password, 5 HttpServletResponse response) { 6 try { 7 Map<String, Object> map = userService.login(username, password); 8 if (map.containsKey("ticket")) { 9 Cookie cookie = new Cookie("ticket", map.get("ticket").toString()); 10 cookie.setPath("/"); 11 response.addCookie(cookie); 12 //return "redirect:/"; 13 return CommonUtil.getJSONString(0, "成功"); 14 } else { 15 //return "redirect:/"; 16 return CommonUtil.getJSONString(1, map); 17 } 18 19 } catch (Exception e) { 20 logger.error("登录异常" + e.getMessage()); 21 //return "redirect:/"; 22 return CommonUtil.getJSONString(1, "注册异常"); 23 } 24 }

使用@RequestParam,即使用Servlet的request.getgetParameter。这种方式可以接受以application/x-www-form-urlencoded这种方式传输的JSON对象的。

2.将Json序列化

前端Ajax

1$(document).ready(function(){ 2 $("#btn_reg").click(function(){ 3 var dataJson = { 4 username:$("#regusername").val(), 5 password:$("#regpassword").val() 6 }; 7 $.ajax({ 8 url:"/reg/", 9 type:"post", 10 contentType:"application/json",//以json字符串形式传输 11 data:JSON.stringify(dataJson),//将json对象序列化成字符串 12 dataType:"json", 13 async:true, 14 success:function(data){ 15 if(data.code==0){ 16 window.location.reload(); 17 } 18 else { 19 20 } 21 } 22 }); 23 24 }); 25});

后端Controller

1@RequestMapping(path = {"/reg/"}, method = {RequestMethod.GET, RequestMethod.POST}) 2 @ResponseBody 3 public String reg(@RequestBody User user, 4 HttpServletResponse response) { 5 try { 6 Map<String, Object> map = userService.register(user.getUsername(), user.getPassword()); 7 if (map.containsKey("ticket")) { 8 Cookie cookie = new Cookie("ticket", map.get("ticket").toString()); 9 cookie.setPath("/"); 10 11 response.addCookie(cookie); 12 return CommonUtil.getJSONString(0, "注册成功"); 13 } else { 14 return CommonUtil.getJSONString(1, map); 15 } 16 17 } catch (Exception e) { 18 logger.error("注册异常" + e.getMessage()); 19 return CommonUtil.getJSONString(1, "注册异常"); 20 } 21 }

@RequestBody中的user中,必须有与前端名称一致的属性,才可以接受到相应数据。

除此之外,@RequestBody还可用Map<String,Object> map来接收。

转载:https://my.oschina.net/u/3786691/blog/1823541

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

SpringMVC @RequestBody接收Json对象字符串

以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时

Ajax和SpringMVC之间JSON交互 - HelloWorld