Der zurückgegebene JSON wird mit „@ResponseBody“ annotiert. „@ResponseBody“ wird auf die Methode angewendet. „@ResponseBody“ bedeutet, dass das Rückgabeergebnis der Methode direkt in den „HTTP-Antworttext“ geschrieben wird.
In diesem Artikel werden zwei Beispiele vorgestellt, um die JSON-Rückgabeanmerkungsmethode zu demonstrieren.
Beispiel 1
@ResponseBody wirkt auf die Methode @ResponseBody bedeutet, dass das Rückgabeergebnis der Methode direkt in den HTTP-Antworttext geschrieben wird Bei Verwendung von [d. h. AJAX] wird der Rückgabewert nach der Verwendung von @RequestMapping normalerweise als Sprungpfad analysiert. Nach dem Hinzufügen von @ResponseBody wird das Rückgabeergebnis jedoch nicht als Sprungpfad analysiert direkt in den HTTP-Antworttext geschrieben. Wenn Sie beispielsweise JSON-Daten asynchron abrufen und @ResponseBody hinzufügen, werden die JSON-Daten direkt zurückgegeben. @RequestBody Fügt den HTTP-Anfragetext in die Methode ein und verwendet einen geeigneten HttpMessageConverter, um den Anfragetext in ein Objekt zu schreiben.
Die folgenden Teile befinden sich in Spring-mvc.xml oder DispatcherServlet-servlet.xml (ServletName-servlet.xml ersetzt Spring-mvc.xml in 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>
im entsprechenden Controller Medium:
@RequestMapping(value="/login",method=RequestMethod.POST) public @ResponseBody User login(String username,String password){ User user = userService.login(username, password); return user; }
Hier verwende ich das Jackson-Paket:
(1) jackson-core 2.5.0
(2) jackson-databind 2.5.0
(3) jackson-annotations 2.5.0
Pfad nach dem Import erstellen;
Warnung: Wenn Sie die von Orm-Tools wie Hibernate, One-to-One, Eins-zu-viele-Beziehungen usw. können sein. Es wird eine Endlosschleife von JSON ausgegeben:
Sie müssen com.fasterxml.jackson.annotation.JsonIgnore in die Pojo-Klasse importieren und die Annotation @JsonIgnore hinzufügen zur Klasse, die abgeschirmt werden muss, damit die annotierten Attribute nicht in JSON angezeigt werden.
Beispiel 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); }
oder
model.addAttribute("user", user1); >
Laufergebnisse:Das obige ist der detaillierte Inhalt vonWelche Anmerkungen werden verwendet, um JSON zurückzugeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!