본문 바로가기

Programming/Framework

DAY 157. Spring ID 중복 검사

 

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