01. MemberController.java
- myPage.jsp에서 회원 탈퇴 btnDelete 버튼에 걸린 제이쿼리 함수가 get 요청으로 걸려있기 때문에 처리할 컨트롤러를 만든다.
@GetMapping("/member/delete")
public ModelAndView delete(
ModelAndView model,
@SessionAttribute(name="loginMember") Member loginMember ){
int result = 0;
result = service.delete(loginMember.getNo());
if(result > 0){
model.addObject("msg", "회원 탈퇴가 정상적으로 처리되었습니다.");
// ▼ /logout으로 보내는 이유는 데이터베이스에서 삭제했다고해서 로그인 세션이 지워지는 것은 아니기 때문에,
// delete()는 데이터베이스에서 데이터를 삭제하는 것일 뿐이고,
// 로그인 세션을 지우는 방법으로는 컨트롤러에 이미 로그아웃처리 컨트롤러를 만들었는데,
// 거기에 세션 스코프로 확장된 객체를 지우는 로직이 있다.
model.addObject("location", "/logout");
} else {
model.addObject("msg", "회원 탈퇴에 실패하였습니다.");
model.addObject("location", "/member/myPage");
}
model.setVeiwName("common/msg");
return model;
}
02. MemberService.java
- delete 추상 메소드 작성
- 여기는 인터페이스이기 때문에, 인터페이스를 구현하는 클래스에서 추상 메소드를 재정의 해야 한다.
03. MemberServiceImpl.java
- 추상 메소드 재정의
@Override
public int delete(int no){
return mapper.deleteMember();
}
<delete id="delteMember" parameterType="_int">
UPDATE MEMBER
SET
STATUS = 'N'
WHERE
NO = #{no}
</delete>
04. MemberMapper.java
int deleteMember(int no);
더보기
더보기
오늘 실습하면서, @GetMapping 으로 회원탈퇴를 하고 /logout으로 보내는 과정에서 405 에러 발생
WHY? 이전에 로그인 실습에서
// 1. MemberController.java 에서 로그아웃 처리 부분이
@PostMapping으로 되어있고,
// 2. home.jsp 에서 로그아웃 버튼이 method="post"로 되어있어서 그랬다.
https://chichibaby.tistory.com/166
그래서 그 2개 부분은 GET 요청으로 바꿨음
[오늘의 배움 포인트!]
** delete() 하는 작업은 정말 데이터베이스를 지우는 작업일 뿐, 로그인 세션이 지워지는 것은 아니기 때문에
로그아웃에 관한 컨트롤러 로직을 짜고 그것을 활용하는 것이 중요하다.
'Programming > Framework' 카테고리의 다른 글
DAY 161. Spring MVC 게시판 게시글 작성 (0) | 2022.01.28 |
---|---|
DAY 160. Spring MVC 게시판 페이징 (0) | 2022.01.26 |
DAY 158. Spring 회원 정보 수정 (0) | 2022.01.24 |
DAY 157. Spring ID 중복 검사 (0) | 2022.01.23 |
DAY 156. Spring 회원 가입 기능 (0) | 2022.01.22 |