60. 스프링으로 회원탈퇴하기

hanahana·2022년 9월 7일
0

Spring 학원수강

목록 보기
11/45
post-thumbnail
  • 마이페이지에서 회원탈퇴 버튼을 누르면 회원이 탈퇴되게 한다.

마이페이지 jsp확인하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원정보 수정</title>
</head>
<body>

<h1 align="center">회원정보수정</h1>
	<div class="">
		<form action="/member/modify.kh" method="post">
			<table>
				<tr>
					<td>* 아이디</td>
					<td><input type="text" id="memberId" name="memberId" value="${member.memberId }" readonly>
					</td>
				</tr>
				<tr>
					<td>* 비밀번호</td>
					<td><input type="password" name="memberPw" value=""></td>
				</tr>
				<tr>
					<td>* 이름</td>
					<td><input type="text" name="memberName" value="${member.memberName }" readonly></td>
				</tr>

				<tr>
					<td>* 이메일</td>
					<td><input type="text" name="memberEmail" value="${member.memberEmail }"></td>
				</tr>
				<tr>
					<td>* 전화번호</td>
					<td><input type="text" name="memberPhone" value="${member.memberPhone }"></td>
				</tr>
				<tr>
					<td>* 우편번호</td>
					<td><input type="text" name="post" value="${post }" ></td>
					<!-- 배열로 값을 받았다면 ${addreess[0]}으로 표기하여 출력할수 있다-->
				</tr>
				<tr>
					<td>* 주소</td>
					<td><input type="text" name="address" value="${address }"></td>
				</tr>
				<tr>
				<td colspan="2" align="center">
			<input type="submit" value="수정하기">
			<button type="button" onclick="removeMember();"> 탈퇴하기 </button>
			<!-- //type을 button으로 꼭 적어줘야! submit이 되지 않는다!! 꼭 기억하기!
				 -->
				</td>
				</tr>
			</table>
			
		</form>
	</div>

<script>
function removeMember() {
	if(window.confirm("탈퇴하시겠습니까?")){
	location.href="/member/remove.kh";
	}
	
}
</script>
</body>
</html>
  • 회원탈퇴 버튼을 누르면 하단의 js문에 따라 탈퇴하시겠습니까? 창이 나오고 확인을 눌러야 탈퇴 controller로 연결된다.

Controller

@RequestMapping(value = "/member/remove.kh", method = RequestMethod.GET)
	// 버튼을 통해 넘어왔기에 무조건 get post는 폼에서 post를 지정해줘야만 가능하다
	public ModelAndView removeMember(HttpSession session, 

			ModelAndView mv
			) {

		Member member = (Member) session.getAttribute("loginUser");
		String memberId = member.getMemberId();

		try {
			int result = mService.removeMember(memberId);

			if (result == 1) {
				mv.setViewName("redirect:/member/logout.kh");
			}

		} catch (Exception e) {

			mv.addObject("msg", e.getMessage());
			mv.setViewName("common/errorPage");
		}

		return mv;
	}
  • 수정페이지와 같이 ModelAndView를 활용하여 리턴과, 넘길값을 지정하였다,
  • 탈퇴가 성공하면 로그아웃컨트롤러로 연결된다,

Service로

@Override
	public int removeMember(String memberId) {
		int result = mStore.deleteMember(session, memberId);
		return result;
	}
  • 세션과 매개변수를 전송한다

Store

@Override
	public int deleteMember(SqlSession session, String memberId) {
		int result = session.delete("MemberMapper.deldetMemger",  memberId);
		return result;
	}
  • update태그의 id와 Mapper.xml의 해당되는 namespace와 연결된 쿼리문을 실행한다

Mapper

<delete id="deldetMemger" parameterType="String">

<!-- delete from member_tbl where member_id=#{memberId} -->
update member_tbl 
set m_status = 'N' where member_id=#{memberId}

</delete>
  • 주석처리하는것은 아예 해당 id의 모든 행의 값을 삭제하는것
  • 아래는 회원여부를 n으로 바꿔 값은 그대로지만 로그인하지 못하게 하는것이다
  • 이경우 로그인할때의 쿼리문의 변경이 필요하다
    <select id="selectLoginOne" resultMap="memberResultMap">
    
    select member_id, member_name from member_tbl where member_id = #{memberId} and member_pwd= #{memberPw} and m_status='y'
    
    </select>
    where절에 m_status ‘y’여부를 확인하여 탈퇴하지 않은 회원만 로그인하게 한다.
profile
hello world

0개의 댓글