Heim >Java >javaLernprogramm >springmvc implementiert JSON-Interaktions-RequestBody und ResponseBody (Bild und Text)

springmvc implementiert JSON-Interaktions-RequestBody und ResponseBody (Bild und Text)

黄舟
黄舟Original
2017-03-16 10:05:412108Durchsuche

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 Client

3.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 von

jquery, 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:&#39;post&#39;, 
url:&#39;${pageContext.request.contextPath }/requestJson.action&#39;, 
contentType:&#39;application/json;charset=utf-8&#39;,  
    //数据格式是json串,商品信息 
    data:&#39;{"name":"手机","price":999}&#39;, 
    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:&#39;post&#39;, 
url:&#39;${pageContext.request.contextPath }/responseJson.action&#39;, 
     //请求的是key/value,这里不需要指定contentType,因为默认就是key/value类型 
     //contentType:&#39;application/json;charset=utf-8&#39;, 
     //数据格式是json串,商品信息 
     data:&#39;name=手机&price=999&#39;, 
     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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn