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 4.1. 2contrôleur 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. 4.2.2contrôleur 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!<%@ 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>
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;
}
}
<%@ 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>
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;
}
}