Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
-
[김영한 스프링] 25. 검증1 Validation - Validator 분리1, 2Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 2. 02:13
Validator 분리1 목표 복잡한 검증 로직을 별도로 분리하자. 컨트롤러에서 검증 로직이 차지하는 부분은 매우 크다. 이런 경우 별도의 클래스로 역할을 분리하는 것이 좋다. 그리고 이렇게 분리한 검증 로직을 재사용할 수도 있다. ItemValidator main/java/hello/itemservice/web/validation/ItemValidator 생성 package hello.itemservice.web.validation; import hello.itemservice.domain.item.Item; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.spri..
-
[김영한 스프링] 24. 검증1 Validation - 오류 코드와 메시지 처리4, 5, 6Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 1. 23:18
오류 코드와 메시지 처리4 MessageCodesResolverTest test/java/hello/itemservice/validation/MessageCodesResolverTest 생성 messageCodesResolverObject 실행 messageCodesResolverField bindingResult.rejectvalue가 내부에서 codeResolver를 호출함 실행 package hello.itemservice.validation; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.validation.DefaultMessageCodesResolver; im..
-
[김영한 스프링] 23. 검증1 Validation - 오류 코드와 메시지 처리1, 2, 3Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 1. 03:41
오류 코드와 메시지 처리1 FieldError 생성자 FieldError는 두 가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage) 파라미터 목록 objectName : 오류가 발생한 객체 이름 field : 오류 필드 rejectedValue : 사용자가..
-
[김영한 스프링] 22. 검증1 Validation - FieldError, ObjectErrorSpring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 30. 23:53
FieldError, ObjectError 목표 사용자 입력 오류 메시지가 화면에 남도록 하자. 예) 가격을 1000원 미만으로 설정 시 입력한 값이 남아있어야 한다. FieldError, ObjectError에 대해서 더 자세히 알아보자. 에러 발생하면 데이터가 사라짐 ValidationItemControllerV2 - addItemV2 @PostMapping("/add") public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 검증 로직 if (!StringUtils.hasText(item.getItemName()..
-
[김영한 스프링] 21. 검증1 Validation - BindingResultSpring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 30. 23:22
BindingResult1 ValidationItemControllerV2 - addItemV1 @PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이름은 필수입니다.")); } if (item.getPrice() == null || item.getPrice() < 1000..
-
[김영한 스프링] 20. 검증1 Validation - 프로젝트 준비 V2Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 29. 04:01
프로젝트 준비 V2 ValidationItemControllerV2 컨트롤러 생성 ValidationItemControllerV1을 ValidationItemControllerV2로 복붙 validation/v1을 validation/v2로 모두 변경 템플릿 파일 복사 v1을 v2로 복붙 v2폴더를 선택하고 Ctrl + Shift + R을 눌러 하위 파일의 validation/v1을 validation/v2로 모두 변경 실행 출처 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다...
-
[김영한 스프링] 19. 검증1 Validation - 검증 직접 처리Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 29. 03:48
검증 직접 처리 - 소개 상품 저장 성공 사용자가 상품 등록 폼에서 정상 범위의 데이터를 입력하면, 서버에서는 검증 로직이 통과하고, 상품을 저장하고, 상품 상세 화면으로 redirect한다. 상품 저장 검증 실패 고객이 상품 등록 폼에서 상품명을 입력하지 않거나, 가격, 수량 등이 너무 작거나 커서 검증 범위를 넘어서면, 서버 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객에게 다시 상품 등록 폼을 보여주고, 어떤 값을 잘못 입력했는지 친절하게 알려주어야 한다. 검증 직접 처리 - 개발 상품 등록 검증 ValidationItemControllerV1 - addItem() 수정 @PostMapping("/add") public String addItem(@ModelAttribute Item ..
-
[김영한 스프링] 18. 검증1 Validation - 검증 요구사항 & 프로젝트 설정 V1 & 세팅Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 8. 29. 02:11
검증 요구사항 상품 관리 시스템에 새로운 요구사항이 추가되었다. 요구사항 : 검증 로직 추가 타입 검증 가격, 수량에 문자가 들어가면 검증 오류 처리 필드 검증 상품명 : 필수, 공백X 가격 : 1000원 이상, 1백만원 이하 수량 : 최대 9999 특정 필드의 범위를 넘어서는 검증 가격 * 수량의 합은 10,000원 이상 지금까지 만든 웹 애플리케이션은 폼 입력 시 숫자를 문자로 작성하거나해서 검증 오류가 발생하면 오류 화면으로 바로 이동한다. 이렇게 되면 사용자는 처음부터 해당 폼으로 다시 이동해서 입력을 해야 한다. 아마도 이런 서비스라면 사용자는 금방 떠나버릴 것이다. 웹 서비스는 폼 입력 시 오류가 발생하면, 고객이 입력한 데이터를 유지한 상태로 어떤 오류가 발생했는지 친절하게 알려주어야 한다...