Le json renvoyé est annoté avec "@ResponseBody". "@ResponseBody" est appliqué à la méthode "@ResponseBody" signifie que le résultat de retour de la méthode est directement écrit dans le "corps de la réponse HTTP".
Cet article présentera deux exemples pour démontrer la méthode d'annotation de retour JSON.
Exemple 1
@ResponseBody agit sur la méthode @ResponseBody signifie que le résultat de retour de la méthode est directement écrit dans le corps de la réponse HTTP et que les données sont. généralement obtenu de manière asynchrone lors de l'utilisation de [c'est-à-dire AJAX], après avoir utilisé @RequestMapping, la valeur de retour est généralement analysée comme un chemin de saut, mais après avoir ajouté @ResponseBody, le résultat renvoyé ne sera pas analysé comme un chemin de saut, mais le sera. écrit directement dans le corps de la réponse HTTP. Par exemple, si vous obtenez des données json de manière asynchrone et ajoutez @ResponseBody, les données json seront renvoyées directement. @RequestBody Insère le corps de la requête HTTP dans la méthode, en utilisant un HttpMessageConverter approprié pour écrire le corps de la requête dans un objet.
Les parties suivantes se trouvent dans Spring-mvc.xml ou dispatcherServlet-servlet.xml (ServletName-servlet.xml a remplacé Spring-mvc.xml dans Spring 3.0)
<!-- 用于将对象转换为 JSON --> <bean> <property> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> <bean></bean> <bean> <property> <list> <ref></ref> <ref></ref> </list> </property> </bean>
dans le contrôleur correspondant Medium :
@RequestMapping(value="/login",method=RequestMethod.POST) public @ResponseBody User login(String username,String password){ User user = userService.login(username, password); return user; }
Ici, j'utilise le package jackson :
(1) jackson-core 2.5.0
(2) jackson-databind 2.5.0
(3) jackson-annotations 2.5.0
Chemin de construction après importation ;
Attention : Si vous utilisez la classe pojo générée par les outils orm tels que hibernate, one-to-one, les relations un-à-plusieurs, etc. peuvent être Une boucle infinie de json sera générée :
Vous devez importer com.fasterxml.jackson.annotation.JsonIgnore dans la classe pojo et ajouter l'annotation @JsonIgnore à la classe qui doit être protégée, afin que les attributs annotés n'apparaissent pas dans json.
Exemple 2
@ResponseBody @RequestMapping(value = "/login") public ModelAndView ajaxLogin(Model model,User user,HttpServletRequest request, HttpSession session){ String errorMessage=loginCommon(model, user, request, session); Map map=new HashMap(); if(ValueWidget.isNullOrEmpty(errorMessage)){ map.put(Constant2.AJAX_LOGIN_RESULT, "success"); }else{ map.put(Constant2.AJAX_LOGIN_RESULT, "failed"); } map.put("error", errorMessage); model.addAttribute("user", null); return new ModelAndView(new MappingJacksonJsonView(),map); }
ou
model.addAttribute("user", user1); >
Résultats d'exécution :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!