728x90

Programming 275

Spring - 로그인 처리 1 - 쿠키, 세션

- package 구조 - hello.login - domain - item - member - login - web - item - member - login - 도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함 - 향후 web은 다른 기술로 바꾸어도 도메인은 그대로 유지되어야 한다. 이렇게 하려면 web은 domain을 알고 있지만 domain은 web을 모르도록 설계해야 한다. web -> domain 의존, domain -> web 의존 X - domain.member 클래스 package hello.login.domain.member; import lombok.Data; import javax.validation.constraint..

Programming/Spring 2023.06.22

Spring - Bean Validation

private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; - 검증 애노테이션 1. @NotBlank : 빈값 + 공백만 있는 경우를 허용하지 않는다. 2. @NotNull : null 을 허용하지 않는다. 3. @Range(min = 1000, max = 1000000) : 범위 안의 값이어야 한다. 4. @Max(9999) : 최대 9999까지만 허용한다. - 검증 순서 1. @ModelAttribute 각각의 필드에 타입 변환 시도 1. 성공하면 다음으로 2. 실패하면..

Programming/Spring 2023.06.22

Spring - 검증 1 - Validation

- 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. - 사용자가 상품 등록 폼에서 정상 범위의 데이터를 입력하면, 서버에서는 검증 로직이 통과하고, 상품을 저장하고, 상품 상세 화면으로 redirect한다. - 고객이 상품 등록 폼에서 상품명을 입력하지 않거나, 가격, 수량 등이 너무 작거나 커서 검증 범위를 넘어서면, 서버 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객에게 다시 상품 등록 폼을 보여주고, 어떤 값을 잘못 입력했는지 친절하게 알려주어야 한다. - FieldError 생성자 요약 public FieldError(String objectName, String field, String defaultMessage) {} - 필드에 오류가 있으면 Field..

Programming/Spring 2023.06.22

Spring - 메시지, 국제화

- 메시지 1. 다양한 메시지를 한 곳에서 관리하도록 하는 기능을 메시지 기능이라 한다. hello=안녕 hello.name=안녕 {0} label.item=상품333 label.item.id=상품 ID333 label.item.itemName=상품명333 label.item.price=가격333 label.item.quantity=수량333 page.items=상품 목록333 page.item=상품 상세333 page.addItem=상품 등록333 page.updateItem=상품 수정333 button.save=저장333 button.cancel=취소333 - resources 폴더 아래 messages.properties라는 파일을 생성한 후 위와 같이 내용을 작성한다. - 스프링 부트를 사용하면 ..

Programming/Spring 2023.06.22

Spring - 타임리프 - 기본 기능

- 타임리프 특징 1. 서버 사이드 HTML 렌더링 (SSR) 2. 네츄럴 템플릿 3. 스프링 통합 지원 - 서버 사이드 HTML 렌더링 (SSR) 1. 타임리프는 백엔드 서버에서 HTML을 동적으로 렌더링 하는 용도로 사용된다. - 네츄럴 템플릿 1. 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있는 타임리프의 특징을 네츄럴 템플릿 (natural templates)이라 한다. - 스프링 통합 지원 1. 타임리프는 스프링과 자연스럽게 통합되고, 스프링의 다양한 기능을 편리하게 사용할 수 있게 지원한다. - 기본 표현식 • 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~..

Programming/Spring 2023.06.20

Spring - 스프링 MVC - 기본 기능

- 로깅 - 로그 라이브러리는 Logback, Log4J, Log4J2 등등 수 많은 라이브러리가 있는데, 그것을 통합해서 인터페이스로 제공하는 것이 바로 SLF4J 라이브러리다. - 쉽게 이야기해서 SLF4J는 인터페이스이고, 그 구현체로 Logback 같은 로그 라이브러리를 선택하면 된다. 실무에서는 스프링 부트가 기본으로 제공하는 Logback을 대부분 사용한다. //@Slf4j @RestController public class LogTestController { private final Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/log-test") public String logTest() { String name =..

Programming/Spring 2023.06.18

Spring - 스프링 MVC - 구조 이해

- FrontController -> DispatcherServlet - handlerMappingMap -> HandlerMapping - MyHandlerAdapter -> HandlerAdapter - ModelView -> ModelAndView - viewResolver -> ViewResolver - MyView -> View - DispacherServlet - 스프링 부트는 DispacherServlet 을 서블릿으로 자동으로 등록하면서 모든 경로( urlPatterns="/" )에 대해서 매핑한다. - 동작 순서 1. 핸들러 조회: 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회한다. 2. 핸들러 어댑터 조회: 핸들러를 실행할 수 있는 핸들러 어댑터를 조회한다. 3. 핸..

Programming/Spring 2023.06.18
728x90