공부/Spring39 [Spring MVC](10) Bean Validator 전과 같이 검증 기능을 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값, 크기와 같이 매우 일반적인 로직이다. 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화한 것이 바로 Bean Validation이다. 먼저 스프링과 통합하지 않고, 순수한 Bean Validation 사용법부터 테스트 코드로 알아보자. build.gradle에 의존 관계 추가 후, 테스트 코드를 작성해본다. Item 클래스 작성 package hello.itemservice.domain.item; import lombok.Data; import org.hibernate.validator.constraints.Range; import javax.validation.const.. 2024. 1. 28. [Spring MVC](9) 검증(Validation) 새로운 프로젝트를 설정 후 검증(Validation) 실습을 해보겠다. 검증 로직을 추가해달라는 요구 사항이 나왔다. 웹 서비스는 폼 입력시 오류가 발생하면 고객이 입력한 데이터를 유지한 상태로 어떤 오류가 발생했는지 알려줘야 사용자를 잃지 않을 수 있다. 컨트롤러의 중요한 역할 중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 0. Get /add => 1. POST /add => 2. Redirect /item/{id} => 3. GET /items/{id} : 상품 등록 폼 => : 상품 저장 => : 홈 이동 => : 상품 상세 0. Get /add => 1. POST /add => 검증 실패! : 상품 등록 폼 => : 상품 저장 => : Model에 검증 오류 결과 포함 => : 상품 .. 2024. 1. 28. [Spring MVC](8) 웹 페이지 만들기 상품을 관리할 수 있는 서비스를 만들어보자. 상품 도메인 모델 * 상품 ID * 상품명 * 가격 * 수량 상품 관리 기능 * 상품 목록 * 상품 상세 * 상품 등록 * 상품 수정 상품 도메인 개발 package hello.itemservice.domain.item; import lombok.Data; @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; public Item() { } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.. 2024. 1. 22. [Spring MVC](7) 기본 기능 - 요청 데이터 2, 응답 클라이언트에서 서버로 데이터를 전송하는 방법 중, 3. HTTP message body에 데이터를 직접 담아서 요청 하는 방법은 요청 파라미터와 다르게 @RequestParam, @ModelAttribute를 사용할 수 없다. InputStream을 사용해서 직접 읽을 수 있다. package hello.springmvc.basic.request; import jakarta.servlet.ServletInputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.h.. 2024. 1. 22. [Spring MVC](6) 기본 기능 - 요청 매핑, 요청 데이터 1 스프링의 기본 기능에 대해 알아보자. MappingController package hello.springmvc.basic.requestmapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); /** * 기본 요청 * HTTP 메서드 모두 허용 GET, HEAD, POST, PUT, PATCH, DELETE * 배열 허용 */ @RequestMapping({"/hell.. 2024. 1. 22. [Spring MVC](5) 스프링 MVC - 구조 이해 지금까지 개발한 프레임워크는 스프링 MVC와 굉장히 흡사하다. 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 직접 개발한 프론트 컨트롤러의 역할이 스프링 MVC에서는 Dispatcher Servlet으로 동작한다. 1. 스프링부트는 Dispatcher Servlet을 서블릿으로 자동으로 등록하면서 모든 경로에 대해 매핑한다. 2. 서블릿이 호출되면 HttpServlet이 제공하는 service()가 호출된다. 3. 스프링 MVC는 Dispatcher Servlet의 부모인 FrameworkServlet에서 오버라이드한 service()를 호출한다. 4. service()를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDispatch()가 호출된다. 5. doDispat.. 2024. 1. 22. 이전 1 2 3 4 5 6 7 다음