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"를 가지고 UserDAO의 delete()메서드로 진입한다.
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 에서 반환하는 값은 UserServiceImpl의 delete()메서드로 들어가고
if(result == 1) {
session.invalidate();
}
반환값이 1이라면 delete구문이 성공적으로 돌았다는 의미이다.
성공적으로 작동했다면 session.invalidate()를 통해 session을 모두 삭제시켜준다.
다시 UserServiceImpl의 delete()메서드에서 반환하는 값은 UserController의 delete.user케이스로 돌아간다
if(result == 1) {
response.sendRedirect(path + "/index.main");
}else {
response.sendRedirect("user_mypage.user");
}
성공했다면 path+"/index.main"라는 경로로 보내는데
여기서 path는 contextPath를 의미하고 저 구문 전체는 메인페이지를 의미한다.