공부/Spring39 [Spring JPA](1) 웹 애플리케이션 개발 - 도메인 분석 설계 기능 목록 회원 기능 회원 등록 회원 조회 상품 기능 상품 등록 상품 수정 상품 조회 주문 기능 상품 주문 주문 내역 조회 주문 취소 기타 요구사항 상품은 재고 관리가 필요하다. 상품의 종류는 도서, 음반, 영화가 있다. 상품을 카테고리로 구분할 수 있다. 상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계 회원 엔티티 회원 테이블 연관관계 매핑 분석 - 회원과 주문: 일대다, 다대일의 양방향 관계다. 따라서 연관관계의 주인을 정해야 하는데, 외래 키가 있는 주문을 연관 관계의 주인으로 정하는 것이 좋다. 그러므로 'Order.member' 를 'ORDERS.MEMBER_ID' 외래 키와 매핑한다. - 주문상품과 주문: 다대일 양방향 관계다. 외래 키가 주문상품에 있으므로 주문상품이 연.. 2024. 2. 29. [Spring MVC](16) 파일 업로드 HTML 폼 데이터를 서버로 전송을 할때, 문자(이름, 나이 등)와 바이너리(첨부파일)를 동시에 전송해야 하는 상황이 있다. 이 문제를 해결하기 위해 HTTP는 multipart/form-data라는 전송 방식을 제공한다. 이 방식은 다른 종류의 여러 파일과 폼의 내용을 함께 전송할 수 있다. 서블릿 파일 업로드1 package hello.upload.controller; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.Part; import lombok.extern.slf4j.Slf4j; import org.springframework.ster.. 2024. 2. 21. [Spring MVC](14) API 예외 처리 HTML 페이지는 4xx, 5xx 와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있다. 하지만 API의 경우에는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. API 예외 처리 학습을 위해 서블릿 오류 페이지 방식을 사용해보겠다. WebServerCustomizer 다시 동작 package hello.exception; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.ErrorPage; import org.springframework.boot.web.server.WebServerFactoryCus.. 2024. 2. 20. [Spring MVC](13) 기본 예외 처리 예외를 어떻게 처리해야하는지 알아보자. 만약 애플리케이션에서 예외가 발생했는데 어디선가 try ~ catch로 잡아 처리하지 않으면 어떻게 될까? WAS 컨트롤러 -> View /error-ex 오류 요청 필터는 DispatchType 으로 중복 호출 제거: dispatchType=REQUEST 인터셉터는 경로 정보로 중복 호출 제거: excludePathPatterns("/error-page/**") 전체 흐름 1. WAS(/error-ex, dispatchType=REQUEST) -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 2. WAS(여기까지 전파) 컨트롤러(/error-page/500) -> View 스프링 부트 - 오류 페이지 스프링 부트는 예외 처리 페이지를 기본으로 제공한다. : /e.. 2024. 2. 20. [Spring MVC](12) 로그인 처리2 - 필터, 인터셉터 로그인한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다. 하지만 로그인하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있다. * http://localhost:8080/items 모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다. 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사(crss-cutting concern)이라고 하는데, 여기서는 '인증'에 대해서 관심을 가지고 있다. 스프링의 AOP로도 해결할 수 있지만, 웹과 관련된 공통 관심사는 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 필터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 필터가 호출된 다음에 서블릿이 호출된다. 필터는 특정 URL 패턴에 적용할 수 있다... 2024. 2. 20. [Spring MVC](11) 로그인 처리1 - 쿠키 & 세션 로그인 기능을 개발해보자. 홈 화면에 고객 이름이 보여야 한다. LoginService package hello.login.domain.login; import hello.login.domain.member.Member; import hello.login.domain.member.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class LoginService { private final MemberRepository memberRepository; /** * @return null 로그인 실패 .. 2024. 2. 17. 이전 1 2 3 4 5 ··· 7 다음