Maison  >  Article  >  Java  >  springmvc implémente json interaction-requestBody et ResponseBody (image et texte)

springmvc implémente json interaction-requestBody et ResponseBody (image et texte)

黄舟
黄舟original
2017-03-16 10:05:412074parcourir

Cet article présente principalement les connaissances pertinentes de springmvc pour implémenter json interaction-requestBody et ResponseBody. A une très bonne valeur de référence. Jetons un coup d'œil avec l'éditeur ci-dessous

Interaction avec les données json

1 Pourquoi l'interaction avec les données json est nécessaire

Le format de données json est couramment utilisé dans les appels interface et les pages html. Le format json est relativement simple et facile à analyser.

Par exemple : interface de service Web, transmettre des données json.

2. springmvc pour l'interaction json

( 1) demande json et génère json. La requête est une chaîne json, le contenu demandé doit donc être converti en json dans la page frontale, ce qui n'est pas pratique.

(2) Demander key/value et afficher json. Cette méthode est plus couramment utilisée.

3. Préparation de l'environnement

3.1 Charger le package jar converti à partir de json

Utilisé dans springmvc Le package jackson effectue la conversion json (@requestBody et @responseBody utilisent le package suivant pour effectuer la conversion json), comme suit :

jackson-core-asl-1.9.11.jar
jackson-mapper-asl-1.9.11.jar

@RequestBody Fonction :

L'annotation @RequestBody est utilisée lire http Le contenu de la requête (String) est converti en données en json, xml et autres formats via l'interface HttpMessageConverter fournie par springmvc et liée aux paramètres de la méthode du contrôleur .

Cet exemple d'application :

L'annotation @RequestBody implémente la réception des données json de la requête http et convertit les données json en javaobjet

fonction @ResponseBody :

Cette annotation est utilisée pour convertir l'objet renvoyé par la méthode Controller en données dans un format spécifié via l'interface HttpMessageConverter, tel que : json, xml, etc., et répondre au client via Response

Cet exemple d'application :

L'annotation @ResponseBody implémente la conversion de l'objet renvoyé par la méthode du contrôleur en une réponse json au client

3.2 Configuration du convertisseur json

Ajouter des messageConverters à l'adaptateur d'annotation


<!--注解适配器 --> 
 <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>

Remarque : si vous utilisez

Test interactif 4.json

4.1 Chaîne json d'entrée, la sortie est une chaîne json

4.1.1jspPage

Utilisez l'ajax de jquery pour soumettre la chaîne json et analyser la sortie résultat json.

N'oubliez pas d'introduire jquery-1.4.4.min.js lorsque vous utilisez jduery


<%@ 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. 2contrôleur


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 Résultats des tests

4.2 Clé/valeur d'entrée, la sortie est une chaîne json

4.2 .1 page jsp

Utilisez l'ajax de jquery pour soumettre la chaîne clé/valeur et analyser le résultat json de sortie.


<%@ 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.2contrôleur


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

La console d'arrière-plan affiche "le nom du produit transmis par la réception : téléphone portable", et vous pouvez voir le retour des données json en visualisant les données http.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn