BackEnd/Spring MVC30 [Spring] 검증2 - Bean Validation - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. Bean Validation - 오브젝트 오류 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Bean Validation 에서 특정 FieldError가 아닌, 오브젝트 관련 에러 또한 처리가 가능하다. (다만 권장하지 않는 방식이다) 바로 @ScriptAssert()를 사용하면 된다. @Data @ScriptAssert(lang = "javascript", script = "_this.price * _this.quantity >= 10000", message = "총 합이 10000원을 넘어야 합니다") public class Item { priv.. BackEnd/Spring MVC 2022. 3. 7. [Spring] 검증2 - Bean Validation - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. Bean Validation - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 기존에 직접 구현하였던 검증과정은 상당하게 번거롭다. 특정 필드에 대하여 하나 하나 전부 검증과정을 거처야 하니 노가다에 가까웠다. 이를 해결하기 위해 등장한것이 Bean Validation 이다. 우선 다음 코드를 살펴보자. public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price.. BackEnd/Spring MVC 2022. 3. 7. [Spring] 검증1 - Validation - 4 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 10. 오류 코드와 메시지 처리 5 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● 핵심은 구체적인 것 을 먼저 사용하고, 덜 구체적일수록 나중에 사용한다. MessageCodesResolver 는 required.item.itemName 처럼 구체적인 것을 먼저 만들어주고, required 처럼 덜 구체적인 것을 가장 나중에 만든다. 그럼 왜 이런식으로 오류코드를 만들까? 모든 오류코드에 대하여 메시지를 전부 다 만들기는 힘들다. 일반적이면서 중요하지 않은 메시지는 범용적인 오류 코드인 required 와 같이 사용하고, 정말 중요한 내용은 필요할때 .. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 3 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 6. 오류 코드와 메시지 처리 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 위에서는 오류 메시지를 직접 추가해줬었는데, 이렇게 직접 추가하다보면 통일성이 없어 진다. 같은 내용의 오류메시지 이지만, 구문이 조금씩 달라질수도 있다. 이를 좀더 효율적으로 오류 메시지를 다루어 보자. properties에 한번에 저장해두고, 메시지처럼 사용할수가 있다. 이러한 활용법을 알아보기 전에 우선 FieldError 생성자를 다시한번 살펴보자. ● FieldError 생성자 public FieldError(String objectName, String field,.. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 3. BindingResult 1 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링이 제공하는 BindingResult를 통해 검증 오류 처리 방법을 알아보자. ● addItemV1 우선 이전 글에서 하나하나 검증하던 코드가 어떻게 변경되었는지 확인해 보자. @PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 검증 로직 if.. BackEnd/Spring MVC 2022. 3. 6. [Spring] 검증1 - Validation - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 검증 직접 처리 - 소개 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 그리고 정상 로직보다 이런 검증 로직을 잘 개발하는 것이 어쩌면 더 어려울 수 있다. 우선 상품 저장이 검증 실패되는 경우를 그림으로 살펴봅시다. 고객이 폼에 입력한 값이 지정된 범위를 넘어가거나, 또는 너무 작은경우 서버에서 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객이 보냈던 실패한 데이터를 Model에 저장하여 다시 반환함으로써 어떤 값을 잘못 입력했는지를 알려줘야 한다 만약 검증이 .. BackEnd/Spring MVC 2022. 3. 5. [Spring] 메시지, 국제화 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 메시지 소스 설정 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링은 기본적으로 메시지 관리 기능을 제공한다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면 되는데, MessageSource는 인터페이스다. 따라서 구현체인 ResourceBundleMessageSource 를 스프링 빈으로 등록하면 된다. 직접 등록하는 방식을 코드로 살펴보자. @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageS.. BackEnd/Spring MVC 2022. 3. 5. [Spring] 스프링 MVC - 기본 기능 - 3 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 9. HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 HTTP API를 제공하는 경우에는 HTML이 아닌, 데아터를 메시지 바디에 담아서 JSON 형식으로 보낸다. HTML이나 뷰 템플릿을 사용해도 HTTP 응답 메시지 바디에 HTML 데이터가 담겨서 전달된다. 여기서 설명하는 내용은 정적 리소스나 뷰 템플릿을 거치지 않고, 직접 HTTP 응답 메시지를 전달하는 경우를 말한다. TEXT를 직접 반환하는 방식과 3가지, JSON을 반환하는 방식 2가지 를 살펴보자. @Slf4j @Controller.. BackEnd/Spring MVC 2022. 2. 28. [Spring] 스프링 MVC - 기본 기능 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 5. HTTP 요청 파라미터 - @ModelAttribute " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 이전까지는 요청 파라미터를 받아서 필요한 인자를 추출하고, 그 값들을 객체를 만들어 넣어주는 방식을 취하였다. 다음과 같이 말이다. @RequestParam String username; @RequestParam int age; HelloData data = new HelloData(); data.setUsername(username); data.setAge(age); 스프링은 이 과정을 자동적으로 처리해주는 @ModelAttribute 기능을 지원.. BackEnd/Spring MVC 2022. 2. 27. [Spring] 스프링 MVC - 기본 기능 - 1 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 요청 매핑 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 ● MappingController @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * 둘다 허용 /hello-basic, /hello-basic/ * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE */ @RequestMapping("/hello-basic") public String h.. BackEnd/Spring MVC 2022. 2. 26. [Spring] 스프링 MVC - 구조 이해 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 1. 스프링 MVC 전체 구조 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 스프링 MVC도 프론트 컨트로러 패턴으로 구현되어있다. MVC의 프론트 컨트롤러가 바로 DisaptcherServlet 이다. ● DispacherServlet 서블릿 등록 DispacherServlet 도 부모 클래스에서 HttpServlet 을 상속 받아서 사용하고, 서블릿으로 동작한다. DispatcherServlet => FrameworkServlet => HttpServletBean => HttpServlet 스프링 부트는 DispacherServlet 을 서블릿으로 자.. BackEnd/Spring MVC 2022. 2. 25. [Spring] MVC 프레임워크 만들기 - 2 내가 공부한것을 올리며, 중요한 단원은 저 자신도 곱씹어 볼겸 상세히 기록하고 얕은부분들은 가겹게 포스팅 하겠습니다. 4. 단순하고 실용적인 컨트롤러 - v4 " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 지난 글에서 만들었던 v3 컨트롤러는 서블릿의 종속성을 제거하고, 뷰 경로의 중복을 제거하는 기능을 하여 잘 설계된 컨트롤러 이다. 하지만 실제 개발자가 컨트롤러 인터페이스를 구현할때마다 항상 ModelView객체를 생성하고 반환해야 하는 부분이 번거롭다. 좋은 프레임워크는 아키텍처도 중요하지만, 그와 더불어 실제 개발하는 개발자가 단순하고 편리하게 사용할 수 있어야 한다. 소위 실용성이 있어야 한다. 이번 V4는 좀더 개발자에게 실용적인 버전을 만들어 보자. 우선 그.. BackEnd/Spring MVC 2022. 2. 23. 이전 1 2 3 다음