07-회원제 게시판 만들기_SpringBoot와 JPA
02-회원(member)파트 - SpringBoot
[회원탈퇴]
update.html 하단에 회원탈퇴 링크를 하나 추가한다.
<a href="/member/delete">회원 탈퇴</a>
회원탈퇴 링크는 member/delete로 링크되며 resources/member 폴더에 delete.html을 만든다.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:font-size="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>회원탈퇴</title>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
</head>
<body>
<div th:align="center">
<h2>회원 탈퇴</h2>
<br><br><br>
회원을 탈퇴하시겠습니까?<br><br><br><br>
<div>
<input type="hidden" id="memberId" name="memberId" th:value="${member.memberId}">
<button th:type="button" th:onclick="deleteById([[${member.memberId}]])">확인</button>
<button th:type="button" onclick="location.href='/member/update'">취소</button>
</div>
</div><br><br>
세션값 이메일: <p th:text="${session['loginEmail']}"></p>
</body>
</html>
MemberController에 회원 탈퇴 화면을 보여주기 위한 메서드를 추가해준다.
// 회원 탈퇴 화면 보여주기
@GetMapping("/delete")
public String delete(Model model, HttpSession session){
String member = (String) session.getAttribute("loginEmail");
MemberDetailDTO memberDetailDTO = ms.findByMemberEmail(member);
model.addAttribute("member", memberDetailDTO);
return "member/delete";
}
서버를 실행해서 회원 탈퇴화면이 정상적으로 사용자에게 보여지는지 확인한다.
[회원탈퇴 처리 ]
delete.html에 회원탈퇴(삭제)를 위한 (script)를 (header)영역에 추가해준다.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:font-size="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>회원탈퇴</title>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script>
const deleteById = (memberId) => {
console.log(memberId);
const reqUrl = "/member/"+memberId;
$.ajax({
type: 'delete',
url:reqUrl,
success: function (){
location.href="/";
},
error: function (){
}
});
}
</script>
</head>
<body>
<div th:align="center">
<h2>회원 탈퇴</h2>
<br><br><br>
회원을 탈퇴하시겠습니까?<br><br><br><br>
<div>
<input type="hidden" id="memberId" name="memberId" th:value="${member.memberId}">
<button th:type="button" th:onclick="deleteById([[${member.memberId}]])">확인</button>
<button th:type="button" onclick="location.href='/member/update'">취소</button>
</div>
</div><br><br>
세션값 이메일: <p th:text="${session['loginEmail']}"></p>
</body>
</html>
MemberControllerl에 delete 관련 내용을 추가한다.
// 회원 삭제처리(Amdin/MemberList에서 관리자가 Ajax로 삭제)
@DeleteMapping("/{memberId}")
public ResponseEntity delete(HttpSession session, @PathVariable("memberId") Long memberId) {
ms.deleteById(memberId);
session.invalidate();
return new ResponseEntity(HttpStatus.OK);
}
MemberController에 ms.deleteById를 클릭하면 MemberService에 관련 내용이 추가된다.
void deleteById(Long memberId);
MemberServiceImpl에 회원 삭제 관련 내용을 추가한다.
// 회원 삭제
@Override
public void deleteById(Long memberId) {
mr.deleteById(memberId);
}
댓글남기기