검증

    [Spring] 검증(Validation) - Validator

    1. Validator 🍩 이전까지 검증 기능들은 컨트롤러 안에 있었다. 당연히 이런 경우에는 별도의 클래스를 만들어서 역할을 분리하는 것이 좋다. 기존 코드를 먼저 살펴보고, ItemValidator라는 클래스를 만들어서 어떻게 별도의 클래스로 검증 기능을 분리하였는지 알아보자. // 기존 코드 @Slf4j @Controller @RequiredArgsConstructor public class ValidationController3 { private final ItemRepository itemRepository; @PostMapping("/add") public String addItem(@ModelAttribute Item item, BindingResult bindingResult, Redire..

    [Spring] 검증(Validation) - bindingResult.rejectValue(), binding.reject()

    이번 글을 통해 이전 글에서 BindingResult, FieldError, ObjectError를 통해 만들어보았던 검증 기능을 조금 더 쉽게 만들어보고자 한다. 1. rejectValue() & reject() 🍣 FieldError와 ObjectError는 너무 복잡하다. BindingResult의 rejectValue와 reject를 사용하면 조금 더 간결하게 검증을 진행할 수 있다. 이전 글에서 BindingResult는 항상 검증해야 할 객체 바로 뒤에 이어서 작성해야 한다고 말한 적이 있다. 이는 BindingResult가 검증해야 할 객체를 이미 알고 있는 것이다. 이 정보를 바탕으로 아래 내용들을 계속해서 살펴보자. rejectValue와 reject의 생성자는 다음과 같다. void r..

    [Spring] 검증(Validation) - BindingResult, FieldError, ObjectError

    이번 글을 통해 BindingResult를 활용한 검증(Validation)을 알아보고자 한다. 글의 순서는 서버에서 검증이 필요한 이유 왜 서버에서 검증을 추가적으로 해야 하는가? BindingResult BindingResult를 활용하여 검증을 수행하는 방법 사용자의 입력 값 유지 방법 바인딩을 하지 못한 상황에서도 사용자의 입력 값을 저장하는 방법 으로 진행하겠다. 1. 서버에서 검증이 필요한 이유 🧲 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 그러나 클라이언트에서 검증을 하고 서버에서는 검증된 값을 그냥 쓰면 되는 거 아닌가라고 생각할 수 있다. 하지만 아래와 같은 이유로 인해서 서버에서도 검증을 수행해야 한다. 클라이언트 검증은 조작할 수 있으므로 보안에 취약..