본문 바로가기
프로젝트

[도파민 프로젝트] 220820 개발일지

by eunoo 2022. 8. 20.

[오늘의 공부]

1. 자바의 정석 - 객체 지향 6장 복습

2. 데이터 모델링 - 20m, ER모델 Cardinality와 Optionality

[오늘 한 일 & 알게 된 것]

1. 회원가입 - 아이디 중복 체크 메서드 만들기

이해가 안가는 부분. @Valid 붙은 객체만 Validator로 검사하는게 아닌가? 왜 @Valid 안붙인 요청값도 Validator를 거칠까?

 

>> 디버깅을 해본 결과, 컨트롤러에 들어오는 모든 요청값들은 Validator의 supports 메서드를 거치고, @Valid를 붙인 객체만 validate 메서드를 거치는 것이었다. 이론으로 배웠을 때는 이 개념이 헷갈렸는데 디버깅을 해보니 개념이 확실히 와닿았다.

 

 2. 회원가입 - 회원가입 완료 시 jsp 반환하기

회원가입 완료하면 success_join을 반환하도록 작성하였다.

다음과 같이 작성을하면, @ResponseBody가 "success_join"을 jsp파일 이름이 아닌 String 객체로 인식하여 String을 응답한다. 응답헤더에서 content-Type=text/plain인걸 볼 수 있고, 응답 결과를 출력해보면 "success_join"문자열이 출력 된다.

나는 html로 반환하고 싶기 때문에 @ResponseBody를 지워야 내가 원하는 결과를 반환할 수 있었다. 그러면 content-Type=text/html로 반환이 된다.

    @PostMapping("/join")
    @ResponseBody
    public String join(@Valid @RequestBody UserDto userDto, BindingResult result) throws UserValidatorException, DuplicateKeyException {
        try {
            //검증 실패면
            if (result.hasErrors()) {
                throw new UserValidatorException(result, "검증 실패");
            }
            //회원가입 성공
            userService.joinUser(userDto);
        } catch (DuplicateKeyException de) {
            throw new DuplicateKeyException("중복된 아이디입니다.");
        }
        return "success_join";
    }

댓글