홈 화면 추가하기
templates 패키지에 home.html을 생성한다. Spring이 실행하면 static 보다 우선적으로 templates 패키지를 확인한다.
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<div>
<h1>Hello Spring</h1> <p>회원 기능</p>
<p>
<a href="/members/new">회원 가입</a>
<a href="/members">회원 목록</a>
</p>
</div>
</div> <!-- /container -->
</body>
</html>
회원 가입 기능
회원 가입 기능은 두 개의 MVC로 구현된다. 회원 가입 폼을 전송해줄 @GetMapping과 폼에 채운 내용을 바탕으로 회원을 저장할 @PostMapping이다.
먼저 GET 방식이다. MemberController에서 "/members/new" URL에 매핑되는 String인 members/createMemberForm으로 이동하도록 한다.
@Controller
public class MemberController {
private final MemberService memberService;
@Autowired
public MemberController(MemberService memberService) {
this.memberService = memberService;
}
@GetMapping("/members/new")
public String createForm() {
return "members/createMemberForm";
}
}
// createMemberForm.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<div class="container">
<form action="/members/new" method="post">
<div class="form-group">
<label for="name">이름</label>
<input type="text" id="name" name="name" placeholder="이름을
입력하세요">
</div>
<button type="submit">등록</button> </form>
</div> <!-- /container -->
</body>
</html>
이제 form에 입력할 MemberForm 객체(getter-setter)를 생성한다.
public class MemberForm {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@PostMapping 어노테이션
→ 사용자가 name을 채우고 버튼을 누르면 form 태그에 기입한 내용대로 "/members/new"로 POST요청을 보낸다.
form.getName()으로 name을 반환하여 member 객체에 할당한 후, join을 통해 저장한다.
@Controller
public class MemberController {
...
@PostMapping("/members/new")
public String create(MemberForm form) {
Member member = new Member();
member.setName(form.getName());
memberService.join(member);
return "redirect:/";
}
}
회원 조회 기능
"members" URL로 매핑하고 작성한다. MemberController에 Member 도메인 배열인 members에 MemberService에서 정의한 회원 리스트 추출 메서드인 findMembers()를 호출한다.
@Controller
public class MemberController {
private final MemberService memberService;
...
@GetMapping("/members")
public String list(Model model) {
List<Member> members = memberService.findMembers();
model.addAttribute("members", members);
return "members/memberList";
}
}
이제 members에는 현재 가입되어 있는 회원 리스트가 저장되어 있다.
attribute(String name, Object value)
- value 객체를 name 이름으로 추가한다. 뷰 코드에서는 name으로 지정한 이름을 통해서 value를 사용한다.
- View에서 name으로 지정된 value를 사용
메모리에 데이터가 있기 때문에 서버를 내렸다가 다시 시작하면 데이터 없어진다.
출처
https://www.inflearn.com/course/스프링-입문-스프링부트
'🌱 Spring > 회원 관리 예제' 카테고리의 다른 글
[Spring] JPA (0) | 2023.07.08 |
---|---|
[Spring] 통합 테스트 (0) | 2023.07.07 |
[Spring] Spring Bean과 의존 관계 (0) | 2023.07.05 |
[Spring] 회원 서비스 테스트(Dependency Injection) (0) | 2023.07.05 |
[Spring] 회원 Service 개발 (0) | 2023.07.03 |