login 과정은 간단하게 이메일, 비밀번호만 입력받아 로그인해보겠다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login</title>
</head>
<body>
<form action="/member/login" method="post">
이메일: <input type ="text" name ="memberEmail"><br>
비밀번호: <input type="password" name ="memberPassword"><br>
<input type ="submit" value="로그인">
</form>
</body>
</html>
@GetMapping("/member/login")
public String loginFrom(){
return "login";
}
memberService에 login 메서드 추가
@PostMapping("/member/login")
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";
}
}
메서드 추가
// 이메일로 회원 정보 조회(select * from member_table where member_email=?)
Optional<MemberEntity> findByMemberEmail(String memberEmail);
MemberService는 dto 객체로 변환하는 메서드이므로 entity->dto로 변환하는 메서드 추가
public static MemberDTO toMemberDTO(MemberEntity memberEntity){
MemberDTO memberDTO = new MemberDTO();
memberDTO.setId(memberEntity.getId());
memberDTO.setMemberEmail(memberEntity.getMemberEmail());
memberDTO.setMemberPassword(memberEntity.getMemberPassword());
memberDTO.setMemberName(memberEntity.getMemberName());
return memberDTO;
}
public MemberDTO login(MemberDTO memberDTO) {
/*
1. 회원이 입력한 이메일로 DB에서 조회를 함
2. DB에서 조회한 비밀번호와 사용자가 입력한 비밀번호가 일치하는지 판단
*/
Optional<MemberEntity> byMemberEmail = memberRepository.findByMemberEmail(memberDTO.getMemberEmail());
if(byMemberEmail.isPresent()){
//조회 결과가 있다(해당 이메일을 가진 회원 정보가 있다)
MemberEntity memberEntity = byMemberEmail.get();
if(memberEntity.getMemberPassword().equals(memberDTO.getMemberPassword())){
//비밀번호 일치
// entity -> dto 변환 후 리턴
MemberDTO dto = MemberDTO.toMemberDTO(memberEntity);
return dto;
}
else{
//비밀번호 불일치
return null;
}
}else{
//조회 결과가 없다(해당 이메일을 가진 회원 정보가 없다)
return null;
}
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>main</title>
</head>
<body>
session 값 확인 : <p th:text="${session.loginEmail}"></p>
</body>
</html>

로그인까지 성공!
다음 포스트에서는 회원 목록을 조회하는 과정을 수행할 것이다!!