Spring
-
Spring MVC - Bean Validation(애노테이션을 이용한 검증)Spring/Spring MVC 2022. 2. 7. 01:48
Spring MVC - Bean Validation(애노테이션을 이용한 검증) Bean Validation은 특정 구현체가 아니라 Bean Validation 2.0(JSR-380)이라는 기술 표준인 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 구현한 기술 중에 일반적으로 사용하는 구현체는 하이버네이트 Validator이다. 더보기 공식 사이트 http://hibernate.org/validator/ The Bean Validation reference implementation. - Hibernate Validator Express validation rules in a standardized way using annotation-based constraints and ..
-
Spring MVC - Validator 분리와 구현Spring/Spring MVC 2022. 2. 6. 17:22
Validator 분리와 구현 검증을 컨트롤러에 구현하면 컨트롤러가 처리하는 로직을 찾기도 어려울 뿐만 아니라 컨트롤러에 너무 많은 부담을 준다. 때문에 검증 처리 부분은 따로 분기해서 사용하는 것이 좋은데 스프링에서 검증 처리를 분기해주는 Validator 인터페이스를 제공한다. Validator를 상속받는 클래스 구현과 사용 방법 Validator 인터페이스를 상속받는 클래스 구현하여 빈 등록을 해준다. 컨트롤러에 작성한 검증 처리를 해당 클래스로 분기할 수 있다. 분기한 검증 처리(검증기)를 사용하기 위해선 해당 컨트롤러에 주입을 받고 @InitBinder를 통해 검증기에 WebDataBinder를 추가해줘야 한다. 검증이 필요한 검증 객체에 @Validated를 적용해주면 된다. 검증 처리를 위한..
-
Spring MVC - 검증(Validation)에 errors MessageSource 사용Spring/Spring MVC 2022. 2. 6. 16:25
검증(Validation)에 errors MessageSource 사용 검증에 위반할 때 오류 코드에 대한 defaultMessage를 매번 적어서 사용하는 것보단 메시지 파일을 만들어 체계적으로 다루는 방법이 효율적이다. errors.properties 메시지 파일을 만들어 어떻게 이용하는지 점진적으로 하나씩 알아보자. MessageSource 설정 추가 MessageSource가 자동으로 errors.properties 파일을 읽어오기 위한 설정을 추가해야 한다. application.properties spring.messages.basename=messages,errors ▶ MessageSource는 기본으로 messages.properties만 읽어온다. 따라서 errors.propertie..
-
Spring MVC - 스프링에서 제공하는 검증(Validation) 방법 (FieldError, ObjectError)Spring/Spring MVC 2022. 2. 5. 23:21
스프링에서 제공하는 검증(Validation) 방법 BindingResult 스프링에서 제공하는 검증 방법의 핵심 검증 오류를 보관하는 객체, 검증 오류가 발생 시 BindingResult에 보관 Model에 자동으로 저장해준다. 바인딩시 데이터 타입 오류가 발생해도 컨트롤러를 호출해 준다. - BindingResult 미사용 → 400 오류 페이지로 이동된다. - BindingResult 사용 → 오류 정보(FieldError)를 BindingResult에 담아서 컨트롤러 호출 BindingResult에 검증 오류를 적용하는 3가지 방법 1. @ModelAttribute의 객체에 타입 오류 등으로 바인딩이 실패하는 경우 스프링이 FieldError를 생성하여 BindingResult에 넣어준다. 2. ..
-
Spring MVC - 검증(Validation) 직접 구현하기Spring/Spring MVC 2022. 2. 5. 21:25
검증(Validation) 검증 방법은 2가지가 있다. 클라이언트 검증과 서버 검증이 있는데 둘의 장단점이 존재한다. 클라이언트 검증은 조작할 수 있으므로 보안에 취약하다. - ex) Postman으로 클라이언트 검증없이 요청이 가능 서버만에서만 검증하면, 즉각적인 고객 사용성이 부족해진다. - 사용자가 입력 폼을 작성할 때 실시간으로 검증 오류를 나타낼수 없다. 둘을 적절히 섞어서 사용하는게 좋다. 다만 최종적으로 서버 검증은 필수 API 방식을 사용하면 API 스펙을 잘 정의해서 검증 오류를 API 응답 결과에 잘 남겨줘야 한다. 검증을 사용할 때 주의할 점이 있는데 웹 애플리케이션은 폼 입력시 숫자를 문자로 작성하거나해서 검증 오류가 발생하면 오류 화면(4xx 상태 코드)으로 바로 이동한다. 이렇게..
-
Spring MVC - 타임리프로 MessageSource에 등록된 메시지 사용하기Spring/Spring MVC 2022. 2. 5. 13:31
타임리프에서 메시지 사용하기 타임리프의 메시지 표현식 #{ ... } 를 사용하면 스프링의 메시지를 편리하게 조회할 수 있다. 아래 두 properties 파일을 만들어 간단하게 사용방법을 알아보자. messages.properties hello=안녕 메시지 hello.name=안녕 메시지 {0} label.item.itemName=상품명 messages_en.properties hello=hello message hello.name=hello message {0} label.item.itemName=Item Name 타임리프를 이용한 메시지(message) 조회 메시지 표현식 #{ ... } 를 사용하여 메시지 조회 서버를 가동시켜 웹브라우저에서 HTML의 소스 코드를 보면 다음과 같다. 안녕 메시지 ..
-
Spring MVC - 스프링에서 제공하는 MessageSource 사용 방법 (메시지와 국제화 기능)Spring/Spring MVC 2022. 2. 5. 03:04
MessageSource 설정 MessageSource 사용 메시지(Message)와 국제화 기능 HTML이나 Java에서 사용하는 메시지를 관리해주는 것이 메시지 기능이다. 예를 들어 특정 메시지가 한 곳이 아닌 여러 곳에서 사용하고 있을 때, 수정이 필요하면 각 파일마다 해당 메시지를 찾아서 수정해야 한다. 1~2개면 괜찮겠지만 수십 곳에서 사용한다면 찾아서 수정하는 게 여간 불편한 게 아니다. 이러한 불편함을 스프링이 기본적인 메시지와 국제화 기능을 모두 제공하고, 타임리프도 스프링에서 제공하는 메시지와 국제화 기능을 편리하게 사용할 수 있도록 제공한다. 국제화 기능이란 메시지 파일을 각 나라별로 관리하는 기능을 말한다. 서버는 HTTP accept-language 해더 값을 이용하여 해당하는 me..
-
Spring MVC - 타임리프(Thymeleaf)을 사용한 Select box(셀렉트 박스)Spring/Spring MVC 2022. 2. 4. 17:29
타임리프(Thymeleaf)를 사용한 Select box(셀렉트 박스) 셀렉트 박스는 여러 선택지 중에 하나를 선택할 때 사용할 수 있다. 자바 객체를 활용해서 셀렉트 박스를 사용해 보자. /** * FAST: 빠른 배송 * NORMAL: 일반 배송 * SLOW: 느린 배송 */ @Data @AllArgsConstructor public class DeliveryCode { private String code; private String displayName; } Select Box을 설명하기 위해 생성한 클래스 @ModelAttribute("deliveryCodes") public List deliveryCodes() { List deliveryCodes = new ArrayList(); deliver..