이전 게시글
https://changha-dev.tistory.com/148
에서 로그인 구현까지 해봤습니다.
이번 시간에는 DB에 저장 돼있는 회원정보들을
웹페이지에서 조회 하는 기능을 살펴보겠습니다.
@Controller
@RequiredArgsConstructor //MemberService에 대한 멤버를 사용 가능
public class MemberController {
// 생성자 주입
private final MemberService memberService;
// 회원가입 페이지 출력 요청
@GetMapping("/member/save")
public String saveForm() {
return "save";
}
@PostMapping("/member/save") // name값을 requestparam에 담아온다
public String save(@ModelAttribute MemberDTO memberDTO) {
System.out.println("MemberController.save");
System.out.println("memberDTO = " + memberDTO);
memberService.save(memberDTO);
return "login";
}
@GetMapping("/member/login")
public String loginForm(){
return "login";
}
@PostMapping("/member/login") // session : 로그인 유지
public String login(@ModelAttribute MemberDTO memberDTO, HttpSession session) {
MemberDTO loginResult = memberService.login(memberDTO);
if (loginResult != null) {
// login 성공
session.setAttribute("loginEmail", loginResult.getMemberEmail());
return "main";
} else {
// login 실패
return "login";
}
}
@GetMapping("/member/")
public String findAll(Model model) {
List<MemberDTO> memberDTOList = memberService.findAll();
// 어떠한 html로 가져갈 데이터가 있다면 model 사용
model.addAttribute("memberList", memberDTOList);
return "list";
}
}
//MemberController.class
findAll 메서드를 추가 하겠습니다.
메서드를 살펴보면
1. memberService의 findAll메서드로
회원 목록 list를 가져옴
2. model 에 list 담아서 html로 보냄
위와 같은 과정을 거칩니다.
MemberService로 가서 findAll 메서드를 구현 하겠습니다.
public List<MemberDTO> findAll() {
List<MemberEntity> memberEntityList = memberRepository.findAll();
//Controller로 dto로 변환해서 줘야 함
List<MemberDTO> memberDTOList = new ArrayList<>();
for (MemberEntity memberEntity : memberEntityList){
memberDTOList.add(MemberDTO.toMemberDTO(memberEntity));
}
return memberDTOList;
}
//MemberService.class
memberRepository의 findAll 메서드를 이용합니다
findAll 메서드 : 상속돼있는 JPA 의 메서드를 이용함
repository에서는 entity를 이용하지만
controller에서는 dto로 형태로 이용하므로
for each문으로 변환 해주는 작업을 해줍니다.
이제 list.html을 만들겠습니다.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>list</title>
</head>
<body>
<h2>list.html</h2>
<table>
<tr>
<th>id</th>
<th>memberEmail</th>
<th>memberPassword</th>
<th>memberName</th>
</tr>
<tr th:each="member: ${memberList}">
<td th:text="${member.id}"></td>
<td th:text="${member.memberEmail}"></td>
<td th:text="${member.memberPassword}"></td>
<td th:text="${member.memberName}"></td>
</tr>
</table>
</body>
</html>
그리고 index페이지에 이곳으로 이동 할 태그를 추가하겠습니다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<body>
<h1> Index Page!</h1>
<a href="/member/save">회원가입</a>
<a href="/member/login">로그인</a>
<a href="/member/">회원목록</a>
</body>
모든 과정을 완료했으니 실행해 보겠습니다.
위와 같이 정상적으로 출력 되었습니다.
'개발' 카테고리의 다른 글
session, cookie, jwt 관계 및 정리 (1) | 2023.07.01 |
---|---|
[Spring Boot] 회원 정보 조회 및 삭제 (0) | 2023.02.12 |
[Spring Boot] 스프링 부트 로그인 구현 (0) | 2023.02.11 |
[Spring Boot] MySQL DB와 연동하기 (0) | 2023.02.10 |
[Spring Boot ] 웹페이지 정보 -> Controller (http method) (0) | 2023.02.09 |