상품 시스템에 로그인을 처리하는 시스템을 만들어보자.
먼저 로그인 하기 전, 홈 화면에서는
- 회원가입
- 로그인
버튼이 있어야 할 것이다.
로그인 후 홈 화면에서는
- 본인 이름(OO님 환영합니다.)
- 상품 관리
- 로그 아웃
이 있고,
보안 요구사항은
- 로그인 사용자만 상품에 접근하고, 관리할 수 있고
- 로그인 하지 않은 사용자가 상품 관리에 접근하면 로그인 화면으로 이동한다
회원 가입, 상품 관리 프로그램이 있다.
홈 화면
홈화면 로그인 후
회원 가입
로그인
상품 관리
프로젝트 생성은
아래의 zip 파일을 해제하여 프로젝트로 열면 된다.
프로젝트로 열고 실행하면 다음과 같다.
실행
http://localhost:8080
실행하면 HomeController 에서 /items 로 redirect 한다.
패키지 구조
- hello.login
- domain
- item
- member
- login
- web
- item
- member
- login
- domain
도메인이 가장 중요하다.
도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함
향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다.
이렇게 하려면 web은 domain을 알고있지만 domain은 web을 모르도록 설계해야 한다.
이것을 web은 domain을 의존하지만, domain은 web을 의존하지 않는다고 표현한다.
예를 들어 web 패키지를 모두 삭제해도 domain에는 전혀 영향이 없도록 의존관계를 설계하는 것이 중요하다.
반대로 이야기하면 domain은 web을 참조하면 안된다.
HomeController - home() 수정
@GetMapping("/")
public String home() {
return "home";
}
templates/home.html 추가
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<link th:href="@{/css/bootstrap.min.css}"
href="css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container" style="max-width: 600px">
<div class="py-5 text-center">
<h2>홈 화면</h2>
</div>
<div class="row">
<div class="col">
<button class="w-100 btn btn-secondary btn-lg" type="button"
th:onclick="|location.href='@{/members/add}'|">
회원 가입
</button>
</div>
<div class="col">
<button class="w-100 btn btn-dark btn-lg"
onclick="location.href='items.html'"
th:onclick="|location.href='@{/login}'|" type="button">
로그인
</button>
</div>
</div>
<hr class="my-4">
</div> <!-- /container -->
</body>
</html>
'스프링 > 스프링 웹 개발 활용' 카테고리의 다른 글
[Spring] 로그인 구현, 쿠키 적용 (0) | 2023.11.13 |
---|---|
[Spring] 회원가입 구현 (0) | 2023.11.10 |
[Spring] Bean Validation - HTTP 메시지 컨버터 (0) | 2023.11.10 |
[Spring] Bean Validation Form 전송 객체 분리 (1) | 2023.10.11 |
[Spring] 등록, 수정 시 Bean Validation 중 Conflict가 발생하는 한계와 이를 개선한 groups (1) | 2023.10.11 |
댓글