본문 바로가기

검증

(7)
검증2 - Validation : HTTP 메시지 컨버터 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 참고 @ModelAttribute는 HTTP 요청 파라미터(URL 쿼리 스트링, POST Form)를 다룰 때 사용한다. @RequestBody는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. @RequestBody의 경우 주로 api를 통해 데이터를 주고 받는데 이때 다음과 같은 경우로 나뉜다. 성공 요청 : 성공 실패 요청 : JSON을 객체로 생성하는 것 자체가 실패함 검증 오류 요청 : JSON을 객체로 생성하는 것은 성공했고, 검증에서 실패함 만약 HttpMessageConverter에서 요청 JSON을 도메인 객체로 생성하는데 실패하면 컨트롤러 자체가 호출되..
검증2 - Validation : Form 전송 객체 분리 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? BeanValidation의 기능인 groups를 실무에서는 잘 사용하지 않는다. 폼에서 전달하는 데이터와 도메인 객체와 딱 맞는 상황이 적기 떄문. 전체적인 흐름 폼 데이터 전달에 도메인 객체 사용 HTML Form → 도메인 객체 → 컨트롤러 → 도메인객체 → Repository 장점 : 중간에 Item을 만드는 과정이 없어서 간단하다 단점 : 간단한 경우에만 적용할 수 있고 수정시 검증이 중복될 수 있고, groups를 사용해 복잡도가 올라간다. 폼 데이터 전달을 위한 별도의 객체 사용 HTML Form -> 등록용 폼 객체-> Controller -> 도메인 객체생성 -> Repository 장점 : 전송하는 폼의 데이..
검증2 - Validation : Bean Validation 인프런 김영한 님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? BeanValidation - 소개 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 BeanValidation 검증 애노테이션 정의 및 사용법 @NotBlank : 빈값 + 공백만 있는 경우를 허용하지 않는다. @NotNull : null 을 허용하지 않는다. @Range(min = 1000, max = 1000000) : 범위 안의 값이어야 한다. @Max(9999) : 최대 9999까지만 허용한다. @Data public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max ..
검증1 - Validation : Validator 분리1,2 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? Validator 분리1 스프링은 검증을 체계적으로 제공하기 위해 다음 인터페이스를 제공한다. public interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors); } supprort(){} : 해당 검증기를 지원하는 여부 확인 validate(Object target, Errors errors) : 검증 대상 객체와 BindingResult Validator 분리2 WebDataBinder는 스프링의 파라미터 바인딩의 역할을 해주고 검증 기능도 내부에 포함한다. @InitBinder public void ini..
검증1 - Validation : 오류 코드와 메시지 처리1~6 BindingResult 가 제공하는 rejectValue() , reject() 를 사용하면 FieldError , ObjectError 를 직접 생성하지 않고, 깔끔하게 검증 오류를 다룰 수 있다. 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 오류 코드와 메시지 처리1 FieldError는 두가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[]..
검증1 - Validation : BindingResult1, 2, FieldError GlobalError 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 스프링에서는 검증 오류처리방법으로 BindingResult를 제공한다. 💡주의! BindingResult 파라미터의 위치는 @ModelAttribute 다음에 와야 한다 필드 오류 - FieldError if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이름은 필수입니다.")); } FieldError 생성자 요약 필드에 오류가 있으면 FieldError 객체를 생성해서 bindingResult 에 담아두면 된다. objectName : @ModelAttribute이름 field : ..
검증1 - Validation 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 검증을 직접 처리하는 방법에 대해서 배웠다. 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 클라이언트 검증은 조작할 수 있으므로 보안에 취약하다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 둘을 적절히 섞어서 사용하되, 최정적으로 서버 검증은 필수 API 방식을 사용하면 API스팩을 잘 정의해서 검증 오류를 aPI응답 결과에 잘 남겨주어야 함 검증에는 클라이언트 검증과 서버 검증이 있다. 정상로직과 실패 로직 만약 검증시 오류가 발생하면 어떤 검증에서 오류가 발생했는지 정보를 담아주어야 한다.→ 검증시 오류가 발생하면 errors 에 담아둔다. 이때 어떤 필드에서 오류가 발생했는지 구..