Spring 45

[인프런/스프링 MVC 2편] 6. 로그인 처리1 - 쿠키, 세션

1. 로그인 요구사항 홈 화면 - 로그인 전 회원 가입 로그인 회원가입, 로그인 홈 화면 - 로그인 후 본인 이름 상품 관리 로그아웃 보안 요구사항 로그인 사용자만 상품에 접근하고, 관리할 수 있음 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동 2. 패키지 구조 설계 package 구조 도메인 : 화면, UI, 기술 인프라 등의 영역을 제외한, 시스템이 구현해야 하는 핵심 비즈니스 업무 영역 web을 다른 기술로 바꾸어도 도메인은 유지해야 함 web --> domain (web은 domain 의존 O) web 상황에 맞게 구조 * 도메인 단위로 상위 패키지 개념을 더 추가 project - blog - controller - dto - entity - service - member..

Spring 2023.05.25

[인프런/스프링 MVC 2편] 5. 검증 (2) - Bean Validation

1. Bean Validation 특정 구현체 X, 기술 표준 (검증 어노테이션 + 여러 인터페이스) 어노테이션으로 검증 로직을 모든 프로젝트에 적용할 수 있도록 공통화, 표준화한 것 검증 어노테이션 모음 : https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/#validator-defineconstraints-spec public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Intege..

Spring 2023.05.24

[인프런/스프링 MVC 2편] 4. 검증, 오류처리 (1) - Validation

검증 요구사항 타입 검증 가격, 수량에 문자가 들어가면 검증 오류 처리 필드 검증 상품명: 필수, 공백X 가격: 1000원 이상, 1백만원 이하 수량: 최대 9999 특정 필드의 범위를 넘어서는 검증 가격*수량의 합은 10,000원 이상 검증 처리 과정 상품 저장 성공시 상품 저장 요청 -> 검증 로직 통과 -> 상품 저장 -> 상품 상세 화면으로 redirect 상품 저장 검증 실패 시 상품 저장 요청 -> 검증 로직 실패 -> Model에 검증 오류 결과 포함해서 담은 채로 상품 등록 폼 1. 검증 처리 (1) 1) 컨트롤러 Controller @PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes..

Spring 2023.05.21

[인프런/스프링 MVC 2편] 3. 메시지, 국제화

1. 메시지와 국제화 메시지 다양한 메시지를 한 곳에서 관리 "상품명" 이라는 단어를 "상품이름"으로 수정하고자 할 때 모든 파일들을 다 찾아가면서 "상품명"이라는 단어를 변경해야 함 -> 해당 HTML 파일에 메시지가 하드코딩 되어있기 때문 (메시지가 박혀있음) -> 메시지를 한 곳에서 관리 ex) messages.properties 메시지 관리용 파일 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 각 HTML들은 해당 데이터를 key 값으로 불러서 사용 국제화 메시지 파일(messages.properties)을 각 나라별로 별도로 관리 ex) messages_en.properties item=Item item.id=Ite..

Spring 2023.05.18

[인프런/스프링 MVC 2편] 2. 타임리프 - 스프링 통합과 폼

타임리프 스프링 통합 스프링 통합으로 추가되는 기능들 스프링의 SpringEL 문법 통합 ${@myBean.doSomething()} 처럼 스프링 빈 호출 지원 편리한 폼 관리를 위한 추가 속성 th:object (기능 강화, 폼 커맨드 객체 선택) th:field, th:errors, th:errorclass 폼 컴포넌트 기능 checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원 스프링의 메시지, 국제화 기능의 편리한 통합 스프링의 검증, 오류 처리 통합 스프링의 변환 서비스 통합 (ConversionService) 1. 입력 폼 처리 th:object : 커맨트 객체 지정 * { ... } : 선택 변수 식 (th:object에서 선택한 객체에 접근) th:fi..

Spring 2023.05.17

[인프런/스프링 MVC 2편] 1. 타임리프 - 기본 기능

타임리프 기본 기능 1. 텍스트 - text, utext 타임리프는 HTML 태그 안에서 기능을 정의해서 동작함 !! 1) th:text HTML의 콘텐츠에 데이터를 출력할 때 2) [[ ... ]] HTML 태그의 속성이 아니라 HTML 콘텐츠 영역 안에서 직접 데이터를 출력하고 싶을 때 * BasicController @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("/text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-basic"; } } * text..

Spring 2023.05.16

[인프런/스프링 MVC 1편] 7. 스프링 MVC - 웹 페이지 만들기 (타임리프 사용)

1. 요구사항 분석 상품을 관리할 수 있는 서비스 (1) 상품 도메인 모델 상품 ID 상품명 가격 수량 (2) 상품 관리 기능 상품 목록 상품 상세 상품 등록 상품 수정 2. 상품 도메인 개발 1) Item - 상품 객체 package hello.itemservice.domain.item; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Item { private Long id; private String itemName; private Integer price; // null이 들어올 수 있어서 int 대신 Integer private Integer quantity; public Item() { } public Item(..

Spring 2023.05.11

[인프런/스프링 MVC 1편] 6. 스프링 MVC - 기본 기능

1. 로깅 ~ ! 1) 로깅 라이브러리 스프링부트 라이브러리를 사용하면 스프링부트 로깅 라이브러리(spring-boot-starter-logging)가 함께 포함됨 SLF4J - 로깅 인터페이스 !!! Logback, Log4J, Log4J2 등등 - SLF4J 인터페이스를 구현한 로그 라이브러리 Logback을 대부분 사용한다 2) 로그 선언 private Logger log = LoggerFactory.getLogger(getClass()); private static final Logger log = LoggerFactory.getLogger(xxx.class); @Slf4j 롬복 사용 3) 로그 호출 log.info("hello") 4) 예시 package hello.springmvc.basic;..

Spring 2023.05.09

[인프런/스프링 MVC 1편] 5. 스프링 MVC - 구조 이해

1. 스프링 MVC 전체 구조 1-1. 직접 만들어본 MVC 구조와 스프링 MVC 구조 비교 직접 만든 MVC 프레임워크 -> 스프링 MVC 프레임워크 비교 FrontController -> DispatcherServlet (핵심) handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver -> VIewResolver MyView -> View 2. DispatcherServlet 구조 살펴보기 (스프링 MVC의 핵심) 2-1. DispatcherServlet 서블릿 등록 부모 클래스에서 HttpServlet을 상속받아서 사용, 서블릿으로 동작 DispatcherSer..

Spring 2023.05.02

[인프런/스프링 MVC 1편] 4. MVC 프레임워크 직접 만들어보기

1. Front Controller 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 공통 처리 기능 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC의 핵심 (DispatcherServlet이 FrontController 패턴으로 구현되어 있음) - 프론트 컨트롤러 도입 전 (각 컨트롤러에서 매번 공통 기능 처리) - 프론트 컨트롤러 도입 후 (프론트 컨트롤러에서 공통 기능 처리) 2. 프론트 컨트롤러 도입 - v1 V1 구조 1) ControllerV1 (인터페이스) 서블릿과 비슷한 모양의 컨트롤러 인터페이스 각 컨트롤러들은 이 인터페이스를 구현 프론트 컨트롤러는 이 인터페이스를 호출해서 구현과 관계없이 로직의 일관성 유지 pa..

Spring 2023.05.01