Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
-
[김영한 스프링] 33. 로그인 처리1 쿠키, 세션 - 로그인 기능 & 쿠키 사용 & 보안 문제Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 12. 05:03
로그인 기능 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; import java.util.Optional; @Service @RequiredArgsConstructor public class LoginService { private final MemberRepository memberRepository; /** * @return null이면 로그인 실패 ..
-
[김영한 스프링] 32. 로그인 처리1 쿠키, 세션 - 홈 화면 & 회원 가입Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 12. 03:37
홈 화면 HomeController - home() 수정 package hello.login.web; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Slf4j @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } templates/home.html 추가 홈 화면 회원 가입 로그인 main/resources/templates/home.html 생성 실행 회원 가입 Membe..
-
[김영한 스프링] 31. 로그인 처리1 쿠키, 세션 - 로그인 요구사항 & 프로젝트 생성 & 세팅Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 8. 02:21
로그인 요구사항 홈 화면 - 로그인 전 회원 가입 로그인 홈 화면 - 로그인 후 본인 이름(누구님 환영합니다.) 상품 관리 로그 아웃 보안 요구사항 로그인 사용자만 상품에 접근하고, 관리할 수 있음 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동 회원 가입, 상품 관리 홈 화면 - 로그인 전 홈 화면 - 로그인 후 회원 가입 로그인 상품 관리 프로젝트 생성 이름 변경 다운로드한 파일 중 "login-start"를 원하는 곳으로 이동 후 "login"으로 이름변경 프로젝트 열기 build.gradle 열기 설정 설정 -> 파일 인코딩 -> 프로퍼티 파일에 대한 디폴트 인코딩을 UTF-8로 변경 설정 -> Gradle -> Intelij IDEA로 변경 실행 ItemServiceAppl..
-
[김영한 스프링] 30. 검증2 Bean Validation - HTTP 메시지 컨버터Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 7. 23:53
Bean Validation - HTTP 메시지 컨버터 @Valid, @Validated는 HttpMessageConverter(@RequestBody)에도 적용할 수 있다. 참고 @ModelAttribute는 HTTP 요청 파라미터(URL 쿼리 스트링, POST Form)를 다룰 때 사용한다. @RequestBody는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. ValidationItemApiController 생성 package hello.itemservice.web.validation; import hello.itemservice.web.validation.form.ItemSaveForm; import lombok.extern.slf4j...
-
[김영한 스프링] 29. 검증2 Bean Validation - Form 전송 객체 분리 프로젝트 준비 V4 & 소개 & 개발Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 7. 23:18
Form 전송 객체 분리 - 프로젝트 준비 V4 ValidationItemControllerV4 컨트롤러 생성 ValidationItemControllerV3를 ValidationItemControllerV4로 복붙 validation/v3를 validation/v4로 모두 변경 템플릿 파일 복사 v3를 v4로 복붙 v4폴더를 선택하고 Ctrl + Shift + R을 눌러 하위 파일의 validation/v3를 validation/v4로 모두 변경 실행 Form 전송 객체 분리 - 소개 ValidationItemV4Controller 실무에서는 groups를 잘 사용하지 않는데, 그 이유가 다른 곳에 있다. 바로 등록 시 폼에서 전달하는 데이터가 Item 도메인 객체와 딱 맞지 않기 때문이다. 소위 "H..
-
[김영한 스프링] 28. 검증2 Bean Validation - 수정에 적용 & 한계 & groupsSpring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 7. 22:05
Bean Validation - 수정에 적용 ValidationItemControllerV3 - edit() 변경 @PostMapping("/{itemId}/edit") public String edit(@PathVariable Long itemId, @Validated @ModelAttribute Item item, BindingResult bindingResult) { // 특정 필드가 아닌 복합 룰 검증 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { bindingResult.reject("t..
-
[김영한 스프링] 27. 검증2 Bean Validation - 스프링 적용 & 에러 코드 & 오브젝트 오류Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 6. 01:27
Bean Validation - 스프링 적용 ValidationItemControllerV3 코드 수정 package hello.itemservice.web.validation; import hello.itemservice.domain.item.Item; import hello.itemservice.domain.item.ItemRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.Bind..
-
[김영한 스프링] 26. 검증2 Bean Validation - 소개 & 시작 & 프로젝트 준비 V3Spring/스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 2023. 9. 5. 21:30
Bean Validation - 소개 검증 기능을 지금처럼 매번 코드로 작성하는 것은 상당히 번거롭다. 특히 특정 필드에 대한 검증 로직은 대부분 빈 값인지 아닌지, 특정 크기를 넘는지 아닌지와 같이 매우 일반적인 로직이다. 다음 코드를 보자. public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max = 1000000) private Integer price; @NotNull @Max(9999) private Integer quantity; //... } 이런 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화한 것이 바로 Bean Validation이다. Bean..