MelonPeach

20. 스프링 회원가입 만들기 / 회원탈퇴 기능 구현

 

안녕하세요? MelonPeach입니다.

오늘은 회원탈퇴 기능에대해 포스팅하겠습니다.

 

 

 

1. memberMapper.xml 작성


스프링 회원가입 만들기(memberMapper.xml)

 

회원탈퇴를 하기위해선 사용자의 USERID와 USERPASS가 맞아야겠지요.

사진과 같이 쿼리를 만들어줍니다.

 

<!-- 회원탈퇴 -->
<delete id="memberDelete">
	DELETE FROM MP_MEMBER
	WHERE USERID = #{userId}
	  AND USERPASS = #{userPass} 
</delete>

 

 

 

2. MemberDAO 작성


스프링 회원가입 만들기(MemberDAO)

 

memberMapper.memberDelete로 파라미터를 보내줍니다.

 

	// 회원 탈퇴
	public void memberDelete(MemberVO vo)throws Exception;
    
    
    	// 업데이트와 마찬가지로 흐름은 같습니다.
	@Override
	public void memberDelete(MemberVO vo) throws Exception {
		// MemberVO에 담긴 값들을 보내줍니다.
		// 그럼 xml에서 memberMapper.memberDelete에 보시면
		//  #{userId}, #{userPass}에 파라미터값이 매칭이 되겠지요.
		sql.delete("memberMapper.memberDelete", vo);
		
	}

 

 

 

3. MemberService작성


스프링 회원가입 만들기(MemberService)

 

MemberService에서 MemberDAO로 파라미터들을 보내줍니다.

 

	public void memberDelete(MemberVO vo) throws Exception;
    
    
    
    	// 업데이트에서 처리한 내용과 같습니다.
	@Override
	public void memberDelete(MemberVO vo) throws Exception {
		dao.memberDelete(vo);
	}

 

 

 

4. MemberController작성


memberDelete에서 session에 담겨있는 member을 사용하여 세션에있는 비밀번호와 vo로 담기는 비밀번호를

비교하여 일치하면 회원을 탈퇴시키고 일치하지 않으면 msg에 false값을 넣어 memberDeleteView로 보내줍니다.

 

	// 회원 탈퇴 get
	@RequestMapping(value="/memberDeleteView", method = RequestMethod.GET)
	public String memberDeleteView() throws Exception{
		return "member/memberDeleteView";
	}
	
	// 회원 탈퇴 post
	@RequestMapping(value="/memberDelete", method = RequestMethod.POST)
	public String memberDelete(MemberVO vo, HttpSession session, RedirectAttributes rttr) throws Exception{
		
		// 세션에 있는 member를 가져와 member변수에 넣어줍니다.
		MemberVO member = (MemberVO) session.getAttribute("member");
		// 세션에있는 비밀번호
		String sessionPass = member.getUserPass();
		// vo로 들어오는 비밀번호
		String voPass = vo.getUserPass();
		
		if(!(sessionPass.equals(voPass))) {
			rttr.addFlashAttribute("msg", false);
			return "redirect:/member/memberDeleteView";
		}
		service.memberDelete(vo);
		session.invalidate();
		return "redirect:/";
	}

 

 

 

5. memberDeleteView작성


스프링 회원가입 만들기(memberDeleteView)

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<html>
	<head>
		<!-- 합쳐지고 최소화된 최신 CSS -->
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
		<!-- 부가적인 테마 -->
		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">
	 	
	 	<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
		<title>회원탈퇴</title>
	</head>
	<script type="text/javascript">
		$(document).ready(function(){
			// 취소
			$(".cencle").on("click", function(){
				
				location.href = "/";
						    
			})
		
			$("#submit").on("click", function(){
				if($("#userPass").val()==""){
					alert("비밀번호를 입력해주세요.");
					$("#userPass").focus();
					return false;
				}	
			});
			
				
			
		})
	</script>
	<body>
		<section id="container">
			<form action="/member/memberDelete" method="post">
				<div class="form-group has-feedback">
					<label class="control-label" for="userId">아이디</label>
					<input class="form-control" type="text" id="userId" name="userId" value="${member.userId}" readonly="readonly"/>
				</div>
				<div class="form-group has-feedback">
					<label class="control-label" for="userPass">패스워드</label>
					<input class="form-control" type="password" id="userPass" name="userPass" />
				</div>
				<div class="form-group has-feedback">
					<label class="control-label" for="userName">성명</label>
					<input class="form-control" type="text" id="userName" name="userName" value="${member.userName}" readonly="readonly"/>
				</div>
				<div class="form-group has-feedback">
					<button class="btn btn-success" type="submit" id="submit">회원탈퇴</button>
					<button class="cencle btn btn-danger" type="button">취소</button>
				</div>
			</form>
			<div>
				<c:if test="${msg == false}">
					비밀번호가 맞지 않습니다.
				</c:if>
			</div>
		</section>
		
	</body>
	
</html>

 

 

 

6. 실행 테스트


실행테스트1

 

비밀번호가 맞지 않았을때 비밀번호가 맞지 않습니다 라는 글이 생깁니다.

 

실행테스트2

 

비밀번호가 맞으면 로그인페이지로 넘어가지며 세션이 끊기게됩니다.

 

 

 

이상으로 회원탈퇴기능을 마치며 다음 포스팅에서는

로그인했을 때 아이디가 중복되는지에 대한 검증 기능을 포스팅하겠습니다.

이 글을 공유합시다

facebook twitter googleplus kakaostory naver