728x90
320x100
[참고]
김영한님 스프링 강의를 바탕으로 진행되는 토이프로젝트의 과정을 기록하는 글입니다.
둥근 피드백은 언제나 환영입니다.
[오늘의 개발내용]
1. 회원 상세 HTML 만들기 (BasicMemberController, member.html)
아니..지금보니까 회원 도메인 만들다가 갑자기 타임라인 도메인 만들구 있음..
뒤죽박죽이넹....다시 회원 도메인의 목록 / 상세 / 수정까지 만들고 타임라인으로 넘어가야지.
1. 회원 상세 HTML 만들기 (BasicMemberController)
package toyproject.bookbookclub.web.member.basic;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import toyproject.bookbookclub.domain.Members.Member;
import toyproject.bookbookclub.domain.Members.MemberRepository;
import java.util.List;
@Controller
@RequiredArgsConstructor
@RequestMapping("/basic/members")
public class BasicMemberController {
/**
* @RequiredArgsConstructor : final이 붙은 멤버변수만 생성자를 자동으로 만들어 준다.
* 이렇게 생성자가 딱 1개만 있으면 스프링이 해당 생성자에 @Autowired 로 의존관계를 주입해준다. 따라서 final 키워드를 빼면 안된다!, 그러면 ItemRepository 의존관계 주입이 안된다.
* 스프링 핵심원리 - 기본편 강의 참고
*
* @GetMapping
* @PostConstruct
*/
private final MemberRepository memberRepository;
/**
* 회원 전체 목록 조회
* @param model
* @return
*/
@GetMapping
public String members(Model model){
List<Member> members = memberRepository.findAll();
model.addAttribute("members", members);
return "basic/members";
}
/**
* 회원 상세 조회
* @param memberId
* @param model
* @return
*/
@GetMapping("/{memberId}")
public String member(@PathVariable String memberId, Model model) {
Member member = memberRepository.findById(memberId);
model.addAttribute("member", member);
return "basic/member";
}
/**
* 테스트용 데이터
* 테스트용 데이터가 없으면 회원 목록 기능이 정상 동작하는지 확인하기 어렵다. @PostConstruct : 해당 빈의 의존관계가 모두 주입되고 나면 초기화 용도로 호출된다.
* 여기서는 간단히 테스트용 테이터를 넣기 위해서 사용했다.
*/
@PostConstruct
public void init(){
memberRepository.save(new Member("testid1", "닉네임1", "1234"));
memberRepository.save(new Member("testid2", "닉네임2", "5678"));
}
}
- BasicMemberController 에 멤버 상세 조회 컨트롤러 추가.
@PathVariable란?
URL에서 사용한 변수를 파라미터로 사용할 수 있음.
1. 회원 상세 HTML 만들기 (member.html)
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<link href="../css/bootstrap.min.css"
th:href="@{/css/bootstrap.min.css}" rel="stylesheet">
<style>
.container {
max-width: 560px;
} </style>
</head>
<body>
<div class="container">
<div class="py-5 text-center">
<h2>상품 상세</h2> </div>
<div>
<label for="memberId">상품 ID</label>
<input type="text" id="memberId" name="memberId" class="form-control"
value="Testid1" th:value="${member.id}" readonly>
</div> <div>
<label for="memberNickname">닉네임</label>
<input type="text" id="memberNickname" name="memberNickname" class="form-control"
value="회원1" th:value="${member.nickName}" readonly> </div>
<div>
<label for="memberPassword">비밀번호</label>
<input type="text" id="memberPassword" name="memberPassword" class="form-control"
value="1111" th:value="${member.password}" readonly>
</div>
<div>
</div>
<hr class="my-4">
<div class="row">
<div class="col">
<button class="w-100 btn btn-primary btn-lg"
onclick="location.href='editMemberForm.html'"
th:onclick="|location.href='@{/basic/items/{itemId}/ edit(memberId=${member.id})}'|" type="button">상품 수정</button>
</div>
<div class="col">
<button class="w-100 btn btn-secondary btn-lg"
onclick="location.href='members.html'"
th:onclick="|location.href='@{/basic/memebers}'|" type="button">목록으로</button>
</div>
</div>
</div> <!-- /container -->
</body>
</html>
엥..상품상세가 아니라 회원상세인데..
암튼 회원 상세 페이지까지 완성!
728x90
320x100
'💻 뚝딱뚝딱 > 북북클럽' 카테고리의 다른 글
[개발일지#007] 회원가입, 회원정보수정 구현 (0) | 2024.01.18 |
---|---|
[개발일지#006] 회원가입 폼 HTML 만들기 (0) | 2024.01.17 |
[개발일지#004] 전체 타임라인 HTML 만들기 (0) | 2024.01.15 |
[개발일지#003] 타임라인(TimeLIne) 도메인 생성 및 테스트 (0) | 2024.01.12 |
[개발일지#002] 회원(Member) 목록 만들기(feat. 부트스트랩, 타임리프) (0) | 2024.01.11 |