springboot自定义json数据返回前台,springboot传json给前台

  springboot自定义json数据返回前台,springboot传json给前台

  

目录

一、参考文献二、勇敢尝试三、最终选择交互方式总结

 

  

一、参考文献

原生埃阿斯与JQuery Ajax

 

  学习笔记一接受数据参数详解及常见错误总结

  提交方式为邮政时,JQuery Ajax以application/x-www-form-urlencoded上传数据对象,后端用@RequestParam或者小型应用程序获取参数JQuery Ajax以应用程序/json上传数据字符串,后端用@RquestBody获取参数。总结成表

  控制器接收参数以及参数校验

  阿贾克斯邮报请求中参数以格式数据和请求有效负载形式在小型应用程序中的获取方式

  

二、勇敢尝试

前端射流研究…发送创建交互式、快速动态网页应用的网页开发技术请求(application/x-www-form-urlencoded)

 

  var jsonObj={openid:xxx , username:Ed sheeran , password : 123 };/* Jquery默认内容类型为application/x-www-form-urlencoded类型*/$.ajax({ type: POST ,url: /login ,dataType: json ,data : JSON。stringify(JSON obj),success :函数(数据){ console。log(data)},错误: function(){ console。日志(他妈的错误)});后端小型应用程序接受参数。前端报200,后端报返回值都是空

  @ controller公共类log in controller { @ post mapping(/log in )public void log in(http servlet request request){ system。呃。println(请求。getparameter( OpenID );系统。呃。println(请求。getparameter( username );系统。呃。println(请求。getparameter( password );}后端改@RequestParam接受参数。前端报404,后端报所需的字符串参数"用户名"不存在

  @ controller公共类登录controller { @ post mapping(/log in )公共void登录(@ request param( username )字符串用户名,@RequestParam(password )字符串密码,@RequestParam(openid )字符串OpenID){ system。呃。println(用户名);System.err.println(密码);系统。呃。println(OpenID);}后端改@请求体接受参数。前端报415,后端报"内容类型“application/x-www-form-urlencoded;不支持"字符集=UTF-8 "

  Http status 415 Unsupported Media Type

  What is 415 ?

  HTTP 415不支持的媒体类型

  客户端错误响应

  e code indicates that the server refuses to accept the request because the payload format is in an unsupported format.

  Let’s look at the broswer ?

  

 

  How to resolve 405 problem when using ajax post @ResponseBody return json data ?

  if you use Spring 4.x jar,please following me(Maven Repository-Spring 4.x.jar)add related jar packagespring-webmvc.x.x.jar

  jackson-databind.jar

  jackson-core.jar

  jackson-annotations.jar

  In Spring Configuration file,add following code

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonHttpMessageConverter" /> </list> </property> </bean> <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean>

In ajax , set contentType : ‘application/json;charse=UTF-8’

 var data = {"name":"jsutin","age":18}; $.ajax({ url : "/ASW/login.html", type : "POST", data : JSON.stringify(data), dataType: json, contentType:application/json;charset=UTF-8, success : function(result) { console.log(result); } });

In server ,using @RequestBody anotation receive json data,and using @ResponseBody anotation response json to jsp page

 

  

@RequestMapping(value = "/login",method = RequestMethod.POST)public @ResponseBody User login(@RequestBody User user){ system.out.println(user.getName); system.out.println(user.getAge);}

 

  

@Controllerpublic class LoginController { @PostMapping("/login") public void login(@RequestBody Map<String,Object> map){ System.err.println(map.get("username")); System.err.println(map.get("password")); System.err.println(map.get("openid")); }

前端加 contentType : application/json。前端报 200,后端 能接受到参数

 

  

 $.ajax({ type: POST, url: "/login", dataType: "json", data: JSON.stringify(jsonObj), contentType : "application/json", success: function(data) { console.log(data) }, error: function() { console.log("fucking error") } });
@Controllerpublic class LoginController { @PostMapping("/login") public void login(@RequestBody Map<String,Object> map){ System.err.println(map.get("username")); System.err.println(map.get("password")); System.err.println(map.get("openid"));}}

有时候,我想在后端使用对象来获取参数。前端报 200,后端 也ok

 

  

@Controllerpublic class LoginController { @PostMapping("/login") public void login(@RequestBody Form form){ System.err.println(form);}}
public class Form { private String openid; private String username; private String password; public String getOpenid() { return openid; } public void setOpenid(String openid) { this.openid = openid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "Form{" + "openid=" + openid +  + ", username=" + username +  + ", password=" + password +  + }; }}

 

  

三、最终选择交互方式

前端 application/json,上传 josn字符串, 后端 使用对象 或者 Map

 

  前端代码

  

 var jsonObj = {"openid":"xxx","username":"Ed sheeran","password":"123"}; /* Jquery默认Content-Type为application/x-www-form-urlencoded类型 */ $.ajax({ type: POST, url: "/login", dataType: "json", data: JSON.stringify(jsonObj), contentType : "application/json", success: function(data) { console.log(data) }, error: function() { console.log("fucking error") } });

后端代码1

 

  

@Controllerpublic class LoginController { @PostMapping("/login") public void login(@RequestBody Form form){ System.err.println(form);}}

后端代码2

 

  

@Controllerpublic class LoginController { @PostMapping("/login") public void login(@RequestBody Map<String,Object> map){ System.err.println(map.get("username")); System.err.println(map.get("password")); System.err.println(map.get("openid"));}}

 

  

总结

到此这篇关于SpringBoot前后端json数据交互的文章就介绍到这了,更多相关SpringBoot前后端json数据交互内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: