01. MemberController.java
@PostMapping("/member/idCheck")
@ResponseBody
//@ResponseBody를 사용하지 않고 ResoponseEntity를 사용하는 방법
// public ResponseEntity<Map<String, Boolean>> idCheck(@RequestParam("userId") String userId){
// return new ResponseEntity<Map<String,Boolean>>(map, HttpStatus.OK); }
public Object idCheck(@RequestParam("userId") String userId) {
Map<String, Boolean> map = new HashMap<>();
log.info("{}", userId);
map.put("duplicate", service.isDuplicateID(userId));
return map;
}
▷ @ResponseBody
- 일반적으로 컨트롤러 메소드의 반환형이 String 타입이면 view의 이름을 반환한다.
- @ResponseBody 어노테이션이 붙은 String 반환은 view를 찾는 view의 이름이 아니라, 해당 요청을 보낸 클라이언트에 전달한 데이터를 의미한다.
- 즉, 반환하는 리턴값이 view를 찾는데 사용하는 view 이름이 아니라,
컨트롤러에서 데이터(문자열)를 응답의 body에 담아서 클라이언트한테 주는 것 어노테이션이다.
- cf. 원래는 요청이 온다 -> jsp가 있으면 그쪽으로 포워딩 시킨다 -> jsp에 있는 내용대로 데이터를 랜더링 한다. -> html로 만들어질 때, response body에 담아서 클라이언트한테 준다.
- @ResponseBody 어노테이션이 붙으면 html 만들어서 body에 담는게 아니라
리턴하는 데이터를 응답 body에 담아서 클라이언트에게 내려준다.
html을 찾는 것이 아니라 내용이 그대로 클라이언트한테 가게된다.
02. MemberController.java - json 테스트
@GetMapping("/member/jsonTest")
@ResponseBody
public Object jsonTest() {
// Map<String, String> map = new HashMap<>();
// map.put("hi", "hello");
// return map;
return new Member("Athesana", "1234", "이산아");
}
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.13.1
- jackson 라이브러리 2.13.1 버전을 pom.xml에 추가
▷ jackson라이브러리
- 자바 객체를 JSON 형태의 데이터로 변환하기 위한 라이브러리(GSON, jsonSimple)
- 스프링에서는 jackson 라이브러리를 추가하고 @ResponseBody 어노테이션을 사용하면, 리턴되는 객체(위에서 오류 났던 Member나 Map 형태)를 자동으로 json으로 변경해서 응답으로 내려준다.
▷ @RestController
- 해당 컨트롤러의 모든 메소드에서 반환하는 경우 사용한다. 상단 클래스에 선언해놓으면 메소드마다 @ResponseBody 어노테이션 사용하지 않아도된다.
- @Controller와 @ResponseBody를 합쳐놓은 역할을 수행한다.
01-1. MemberService.java
- 기존 서비스에 필요한 메소드 생성
Boolean isDuplicateID(String userId);
01-2. MemberServiceImpl.java
- 인터페이스에 추가된 추상 메소드를 재정의해주기 위해 메소드 추가
@Override
public Boolean isDuplicateID(String id) {
return mapper.findMemberById(id) != null;
}
'Programming > Framework' 카테고리의 다른 글
DAY 159. Spring 회원 탈퇴 (0) | 2022.01.25 |
---|---|
DAY 158. Spring 회원 정보 수정 (0) | 2022.01.24 |
DAY 156. Spring 회원 가입 기능 (0) | 2022.01.22 |
DAY 155. Spring 로그인 기능 (0) | 2022.01.21 |
DAY 154. Spring 암호화 (0) | 2022.01.20 |