In diesem Artikel werden hauptsächlich die relevanten Kenntnisse von SpringMVC zur Implementierung von JSONInteraction-RequestBody und ResponseBody vorgestellt. Hat einen sehr guten Referenzwert. Werfen wir einen Blick mit dem Editor unten
JSON-Dateninteraktion
1. Warum JSON-Dateninteraktion notwendig ist
Das JSON-Datenformat wird häufig in Schnittstellen--Aufrufen und HTML-Seiten verwendet. Das JSON-Format ist relativ einfach und leicht zu analysieren.
Zum Beispiel: Webservice-Schnittstelle, JSON-Daten übertragen.
2. Springmvc für JSON-Interaktion
( 1) fordert JSON an und gibt JSON aus. Die Anforderung ist eine JSON-Zeichenfolge, daher muss der angeforderte Inhalt auf der Front-End-Seite in JSON konvertiert werden, was nicht praktisch ist.
(2) Schlüssel/Wert anfordern und JSON ausgeben. Diese Methode wird häufiger verwendet.
3. Umgebungsvorbereitung
3.1 Laden Sie das aus JSON konvertierte JAR-Paket
Verwendet in springmvc Das Jackson-Paket führt die JSON-Konvertierung durch ((@requestBody und @responseBody verwenden das folgende Paket, um die JSON-Konvertierung durchzuführen) wie folgt:
jackson-core-asl-1.9.11.jar jackson-mapper-asl-1.9.11.jar
@RequestBody-Funktion:
@RequestBody-Annotation wird verwendet lesen http Der Inhalt der Anforderung (String) wird über die von springmvc bereitgestellte HttpMessageConverter-Schnittstelle in Daten in JSON, XML und anderen Formaten konvertiert und an die Parameter der Controller-Methode gebunden .
Diese Beispielanwendung:
@RequestBody-Annotation implementiert den Empfang von JSON-Daten einer HTTP-Anfrage und konvertiert JSON-Daten in ein JavaObjekt
@ResponseBody-Funktion:
Diese Annotation wird verwendet, um das von der Controller-Methode zurückgegebene Objekt über die HttpMessageConverter-Schnittstelle in Daten in einem angegebenen Format umzuwandeln, z. B. JSON, XML usw., und um dem Client über Response
Diese Beispielanwendung: Die @ResponseBody-Annotation implementiert die Konvertierung des von der Controller-Methode zurückgegebenen Objekts in eine JSON-Antwort an den Client3.2 Konfigurieren des JSON-Konverters
Nachrichtenkonverter zum Annotationsadapter hinzufügen<!--注解适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> </list> </property> </bean>Hinweis: Wenn Sie 463d7d566f84e66ad507872587b9c14c , müssen Sie den oben genannten Inhalt nicht definieren.
Interaktiver 4.json-Test
4.1 Eingabe einer JSON-Zeichenfolge, die Ausgabe ist eine JSON-Zeichenfolge
4.1.1jspSeite
Verwenden Sie den Ajax vonjquery, um die JSON-Zeichenfolge zu übermitteln und die Ausgabe zu analysieren JSON-Ergebnis.
Vergessen Sie nicht, jquery-1.4.4.min.js einzuführen, wenn Sie jduery verwenden<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" > <title>json交互测试</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> //请求的是json,输出的是json function reuqestJson(){ $.ajax({ type:'post', url:'${pageContext.request.contextPath }/requestJson.action', contentType:'application/json;charset=utf-8', //数据格式是json串,商品信息 data:'{"name":"手机","price":999}', success:function(data){//返回json结果 alert(data); } }); } </script> </head> <body> <input type="button" onclick="reuqestJson()" value="请求的是json,输出的是json"/> </body> </html>
4.1. 2Controller
package cn.edu.hpu.ssm.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.edu.hpu.ssm.po.ItemsCustom; //json交互测试 @Controller public class JsonText { //请求json(商品信息),输出json(商品信息) //@RequestBody将请求的商品信息的json串转成itemsCustom对象 //@ResponseBody将itemsCustom转成json格式输出 @RequestMapping("/requestJson") public @ResponseBody ItemsCustom requestJson(@RequestBody ItemsCustom itemsCustom){ //@ResponseBody将itemsCustom转成json格式输出 return itemsCustom; } }
4.1.3 Testergebnisse
4.2 Eingabeschlüssel/Wert, die Ausgabe ist ein JSON-String
4.2 .1 JSP-Seite
Verwenden Sie den Ajax von jquery, um die Schlüssel-/Wertzeichenfolge zu übermitteln und das ausgegebene JSON-Ergebnis zu analysieren.<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" rel="external nofollow" rel="external nofollow" > <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" > <title>json交互测试</title> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.4.4.min.js"></script> <script type="text/javascript"> //请求是key/value,输出是json function responseJson(){ $.ajax({ type:'post', url:'${pageContext.request.contextPath }/responseJson.action', //请求的是key/value,这里不需要指定contentType,因为默认就是key/value类型 //contentType:'application/json;charset=utf-8', //数据格式是json串,商品信息 data:'name=手机&price=999', success:function(data){//返回json结果 alert(data); } }); } </script> </head> <body> <input type="button" onclick="requestJson()" value="请求的是key/value,输出的是json"/> </body> </html>
4.2.2Controller
package cn.edu.hpu.ssm.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.edu.hpu.ssm.po.ItemsCustom; //json交互测试 @Controller public class JsonText { //请求key/value(商品信息),输出json(商品信息) @RequestMapping("/responseJson") public @ResponseBody ItemsCustom responseJson(ItemsCustom itemsCustom){ //@ResponseBody将itemsCustom转成json格式输出 System.out.println("前台传过来得商品名:"+itemsCustom.getName()); return itemsCustom; } }
4.2.3 Test
Die Hintergrundkonsole gibt „den von der Rezeption übergebenen Produktnamen: Mobiltelefon“ aus und Sie können das Feedback der JSON-Daten sehen durch Anzeigen der http-Daten.Das obige ist der detaillierte Inhalt vonspringmvc implementiert JSON-Interaktions-RequestBody und ResponseBody (Bild und Text). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!