jsp

MVC2 패턴 예시 회원탈퇴

0304호 2022. 12. 6. 20:50

User_mypage 

마이페이지에 로그아웃 정보수정 회원탈퇴 기능 추가

<section>
	<div align="center">
		${sessionScope.user_id }
		<b> (${sessionScope.user_name })</b>님 환영합니다
		<div>
			<a href="user_logout.user">[로그아웃]</a><br>
			<a href="user_modify.user">[정보수정]</a><br>
			<a href="user_delete.user">[회원탈퇴]</a>
		</div>
	</div>
</section>

회원탈퇴 클릭시

user_delete.user 로 이동하는걸 Controller에서 *.user 확장자를 인식해서 case로 보낸다.

case "/user/user_delete.user":		//삭제
	result = service.delete(request, response);
	if(result == 1) {
		response.sendRedirect(path + "/index.main");
	}else {
		response.sendRedirect("user_mypage.user");
	}
	break;

UserServiceImpl 서비스에 request와 response를 들고 진입한다.

@Override
	public int delete(HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		String id = (String) session.getAttribute("user_id");
		UserDAO dao = UserDAO.getInstance();
		int result = dao.delete(id);
		if(result == 1) {
			session.invalidate();
		}
		return result;
	}

session을 불러와서 해당 session의 "user_id"를 가지고 UserDAOdelete()메서드로 진입한다.


public int delete(String id) {
		int result=0;
		String sql = "delete from users where id=?";
		try {
			conn=DriverManager.getConnection(URL, UID, UPW);
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, id);
			result = pstmt.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			JDBCUtill.close(conn, pstmt, rs);
		}
		return result;
	}

UserDAO에서는 sql문을 실행시켜 매개변수로 가져온 id에 맞는 정보를 삭제시킨다.

pstmt.executeUpdate는 반환값이 int형이기 때문에 result라는 정수형 변수에 담아서 리턴해준다.


UserDAO 에서 반환하는 값은 UserServiceImpldelete()메서드로 들어가고

if(result == 1) {
	session.invalidate();
}

반환값이 1이라면 delete구문이 성공적으로 돌았다는 의미이다.

성공적으로 작동했다면 session.invalidate()를 통해 session을 모두 삭제시켜준다.


다시 UserServiceImpldelete()메서드에서 반환하는 값은 UserControllerdelete.user케이스로 돌아간다

if(result == 1) {
		response.sendRedirect(path + "/index.main");
	}else {
		response.sendRedirect("user_mypage.user");
	}

성공했다면 path+"/index.main"라는 경로로 보내는데

여기서 pathcontextPath를 의미하고  저 구문 전체는 메인페이지를 의미한다.