기록

*77일차 실습 본문

학원/실습

*77일차 실습

pringspring 2022. 5. 18. 00:44

@회원탈퇴

package member.controller;

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import member.model.service.MemberService;

/**
 * Servlet implementation class MemberDeleteServlet
 */
@WebServlet("/member/memberDelete")
public class MemberDeleteServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private MemberService memberService = new MemberService();
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			//1. 사용자 입력값 처리
			String memberId = request.getParameter("memberId");
			
			//2. 서비스로직호출
			int result = memberService.deleteMember(memberId);
			
			// 탈퇴후처리 - 세션폐기, 쿠키폐기
			Cookie cookie = new Cookie("saveId", memberId);
			cookie.setPath(request.getContextPath());
			cookie.setMaxAge(0); // 응답을 받은 즉시 삭제
			response.addCookie(cookie);
			
			// 모든 세션속성 제거 (session.invalidate() 대신)
			HttpSession session = request.getSession();
			Enumeration<String> names = session.getAttributeNames(); 
			while(names.hasMoreElements()) {
				String name = names.nextElement();
				session.removeAttribute(name);
			}
			
			//3. 리다이렉트 처리
			session.setAttribute("msg", "탈퇴가 성공적으로 처리되었습니다. 감사합니다.");
			response.sendRedirect(request.getContextPath() + "/");
//			response.sendRedirect(request.getContextPath() + "/member/logout");
			
			
			
			
		} catch (Exception e) {
			e.printStackTrace();
			throw e;
		}
		
	}

}
	public int deleteMember(String memberId) {
		int result = 0;
		// 1. Connection객체 생성
		Connection conn = getConnection();
		try {
			// 2. dao 요청
			result = memberDao.deleteMember(conn, memberId);
			// 3. 트랜잭션 처리
			commit(conn);
		} catch (Exception e) {
			rollback(conn);
			throw e; // controller 통보용
		} finally {
			// 4. Connection객체 반환
			close(conn);
		}
		return result;
	}
<form 
	name="memberDelFrm" 
	action="<%= request.getContextPath() %>/member/memberDelete" 
	method="POST">
	<input type="hidden" name="memberId" value="<%= loginMember.getMemberId() %>" />
</form>
<script>
const deleteMember = () => {
	if(confirm("정말로 탈퇴하시겠습니까?")){
		document.memberDelFrm.submit();
	}
}

'학원 > 실습' 카테고리의 다른 글

*83일차 실습  (0) 2022.05.25
*78일차 실습  (0) 2022.05.18
*73일차 실습  (0) 2022.05.11
*67일차 실습  (0) 2022.05.02
*64일차 실습  (0) 2022.04.27