반환된 json에는 "@ResponseBody"라는 주석이 붙습니다. "@ResponseBody"는 메서드의 반환 결과가 "HTTP 응답 본문"에 직접 기록된다는 의미입니다.
이 문서에서는 JSON 반환 주석 방법을 보여주는 두 가지 예를 소개합니다.
예제 1
@ResponseBody는 메소드의 반환 결과가 HTTP 응답 본문에 직접 기록된다는 의미입니다. 일반적으로 데이터를 비동기적으로 얻을 때(즉, AJAX) 사용됩니다. @RequestMapping 사용 @ResponseBody를 추가한 후 반환 값은 일반적으로 점프 경로로 구문 분석되지만, @ResponseBody를 추가한 후에는 반환 결과가 점프 경로로 구문 분석되지 않고 HTTP 응답 본문에 직접 작성됩니다. 예를 들어, json 데이터를 비동기적으로 가져와서 @ResponseBody를 추가하면 json 데이터가 직접 반환됩니다. @RequestBody 요청 본문을 개체에 쓰기 위해 적절한 HttpMessageConverter를 사용하여 HTTP 요청 본문을 메서드에 삽입합니다.
다음 부분은 Spring-mvc.xml 또는 dispatcherServlet-servlet.xml에 있습니다(Spring 3.0에서는 ServletName-servlet.xml이 Spring-mvc.xml을 대체함)
<!-- 用于将对象转换为 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>
해당 컨트롤러에서:
@RequestMapping(value="/login",method=RequestMethod.POST) public @ResponseBody User login(String username,String password){ User user = userService.login(username, password); return user; }
여기서 다음을 사용합니다. jackson 패키지:
(1) jackson-core 2.5.0
(2) jackson-databind 2.5.0
(3) jackson-annotations 2.5.0
가져오기 후 빌드 경로
경고: 최대 절전 모드, 일대일, 일대다 및 기타 관계와 같은 orm 도구로 생성된 pojo 클래스는 무한 루프 json을 출력할 수 있습니다.
pojo 클래스에서 com.fasterxml.jackson.annotation.JsonIgnore를 가져와야 하며 보호해야 하는 클래스를 추가합니다. 주석이 달린 속성이 json에 표시되지 않도록 @JsonIgnore 주석을 추가합니다.
예 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); }
또는
model.addAttribute("user", user1)
실행 결과:
위 내용은 json을 반환하는 데 어떤 주석이 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!