본문 바로가기

Programming/Framework

DAY 159. Spring 회원 탈퇴

 

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() 하는 작업은 정말 데이터베이스를 지우는 작업일 뿐, 로그인 세션이 지워지는 것은 아니기 때문에
로그아웃에 관한 컨트롤러 로직을 짜고 그것을 활용하는 것이 중요하다.