본문 바로가기

SPRING

(39)
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 9일차 API 예외 처리 HTML 페이지의 경우 4xx, 5xx 와 같은 오류 페이지만 있으면 대부분 문제를 해결 할 수 있다. API의 경우에는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다. package hello.exception.api; import hello.exception.exception.BadRequestException; import hello.exception.exception.UserException; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import o..
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 8일차 예외 처리와 오류 페이지 서블릿 예외 처리 서블릿은 2가지 방식으로 예외 처리를 지원한다. · Exception(예외) · response.sendError(HTTP 상태코드 , 오류 메시지) Exception(예외) 웹 애플리케이션 웹 애플리케이션은 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다. 애플리케이션에서 예외를 잡지 못하고 서블릿 밖으로 예외가 전달되면 어떻게 동작할까? WAS
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 7일차 서블릿 필터 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사라고 한다. 공통 관심사는 스프링의 AOP로도 해결할 수 있지만, 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 서블릿 필터나 스프링 인터센텁는 HttpServletRequest를 제공한다. 필터 흐름 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러 필터를 적용하면 필터가 호출 된 다음에 서블릿이 호출 된다. 필터는 특정 URL 패턴에 적용할 수 있다. /* 이라고 하면 모든 요청에 필터가 적용된다. 스프링을 사용하는 경우 여기서 말하는 서블릿은 디스패처 서블릿으로 생각하면 된다. 필터 제한 HTTP 요청 -> WAS -> 필터(적절 하지 않은 요청이라 판단, 서블릿 호출X) 필터에서 적절하지 않은 요..
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 6일차 로그인처리1 - 쿠키, 세션 로그인 상태 유지하기 로그인의 상태를 유지하기 위해 쿠키를 사용해 보았다. 서버에서 로그인에 성공하면 HTTP 응답에 쿠키를 담아서 브라우저에 전달한다. 브라우저는 앞으로 해당 쿠키를 지속해서 보내준다. 쿠키에는 영속쿠키와 세션 쿠키가 있다. 영속 쿠키: 만료 날짜를 입력하면 해당 날짜까지 유지 세션 쿠키: 만료 날짜를 생략하면 브라우저 종료시 까지만 유지 public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } ..
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 5일차 Bean Validation Bean Validation 이란 ? Bean Validation 2.0이라는 기술 표준이다. 검증 애노테이션과 여러 인터페이스의 모음이다. Bean Validation을 사용하려면 의존관계를 추가해야 한다. implementation 'org.springframework.boot:spring-boot-starter-validation' package hello.itemservice.domain.item; import lombok.Data; import org.hibernate.validator.constraints.Range; import javax.validation.constraints.Max; import javax.validation.constraints.NotBla..
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 4일차 BindingResult public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { //검증 로직 if(!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이름은 필수 입니다.")); } if(item.getPrice() == null || item.getPrice() 1000000){ bindingResult.addError(new Fiel..
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 3일차 메시지,국제화 기획자가 화면에 보이는 문구를 바꿔달라고 요청하면 어떻게 해야할까? 예를들면 상품명 -> 상품이름으로 바꿔달라고 요청한다. 여러 화면에 보이는 상품명이란 단어를 다 찾아가면서 바꿔야 할 것이다. 화면수가 적으면 문제가 되지 않지만 화면이 수십개 이상이라면 수십개의 파일을 모두 고쳐야한다. 이러한 문제를 해결 하기위해 스프링은 메시지 관리 기능을 제공한다. 메시지 관리 기능을 사용하려면 스프링이 제공하는 MessageSource를 스프링 빈으로 등록하면되는데, MessageSource는 인터페이스이다. 따라서 구현체인 ResourceBundleMessageSource를 스프링 빈으로 등록하면 된다. 스프링 부트는 MessageSource를 자동으로 스프링 빈으로 등록한다. label.item..
김영한 - 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 2일차 타임리프 스프링 통합 타임리프는 스프링과 통합을 위한 다양한 기능을 편리하게 제공한다. 스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()}처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 · th:object · th:field , th:errors , th:errorclass 폼 컴포넌트 기능 · checkbox , radio , button , List 등을 편리하게 사용할 수 있는 기능 지원 스프링의 메시지, 국제화 기능의 편리한 통합 스프링의 검증, 오류 처리 통합 스프링의 변환 서비스 통합 입력 폼 처리 th:object : 커맨드 객체를 지정한다. *{...} : 선택 변수 식 이라고 한다. th:object에서 선택한 객..