YJ의 새벽
JDBC 활용 연습용11. ( 회원탈퇴 ) 본문
--- 현재비밀번호가 맞는지 확인후 , 체크박스 체크하면 , 탈퇴하도록 만들자 .
-- form 형식 secessionValidate() 함수를 이용하자 .
--- myPage.js 회원탈퇴 유효성 검사 .
////////////////////////////////// 회원탈퇴
//회원 탈퇴 유효성 검사
function secessionValidate(){
const memberPw = document.getElementById("memberPw");
const agree = document.getElementById("agree");
// 비밀번호 미작성
if(memberPw.value.trim().length == 0){
alert("비밀번호를 입력해주세요.");
memberPw.focus();
return false;
}
// 약관 동의 체크 여부
// - 체크박스요소.checked : 체크 시 true, 해제 시 false 반환
if( !agree.checked ){ // 체크를 안했을 때
alert("약관 동의 후 탈퇴 버튼을 클릭해주세요.");
agree.focus();
return false;
}
// 정말 탈퇴할지 확인
// - window.confirm("내용") : 대화 상자에 확인/취소 생성
// 확인 클릭 시 true / 취소 클릭 시 false
// window는 생략 가능
if( !confirm("정말 탈퇴 하시겠습니까?") ){ // 취소를 누른 경우
return false;
}
return true;
}
--- MyPageSecessionServlet.class 서블릿클래스
@WebServlet("/member/myPage/secession")
public class MyPageSecessionServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path = "/WEB-INF/views/member/myPage-secession.jsp";
req.getRequestDispatcher(path).forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String memberPw = req.getParameter("memberPw");
HttpSession session = req.getSession();
Member loginMember = (Member) session.getAttribute("loginMember");
int memberNo = loginMember.getMemberNo();
try {
MemberService service = new MemberService();
int result = service.secessionMember(memberPw,memberNo);
if( result >0 ) {
session.invalidate(); // 세션 무효화
session = req.getSession(); // 다시 세팅
session.setAttribute("message", "탈퇴 되었습니다.");
resp.sendRedirect(req.getContextPath());
Cookie c = new Cookie("saveId", ""); // 쿠키 생성
c.setMaxAge(0); // 쿠키 수명
c.setPath(req.getContextPath()); // 쿠키 적용 경로
resp.addCookie(c); // 쿠키 클라이언트에 전송
}else {
session.setAttribute("message", "비밀번호 일치하지않습니다");
resp.sendRedirect("secession");
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
--- MemberService.class 멤버 탈퇴 서비스
/** 멤버탈퇴 서비스
* @param memberPw
* @param memberNo
* @return
* @throws Exception
*/
public int secessionMember(String memberPw, int memberNo) throws Exception {
Connection conn = getConnection();
int result = dao.secessionMember(conn,memberPw,memberNo);
if ( result >0 ) commit(conn);
else rollback(conn);
close(conn);
return result;
}
-- MemberDAO.class 회원 삭제여부 N DAO
/**
* 회원삭제 DAO
*
* @param conn
* @param memberPw
* @param memberNo
* @return
*/
public int secessionMember(Connection conn, String memberPw, int memberNo) throws Exception {
int result = 0;
try {
String sql = prop.getProperty("secession");
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, memberNo);
pstmt.setString(2, memberPw);
result = pstmt.executeUpdate();
} finally {
close(pstmt);
}
return result;
}
-- member-sql.xml 회원탈퇴처리 쿼리문 .
<entry key="secessionMember">
UPDATE MEMBER SET
SECESSION_FL = 'Y'
WHERE MEMBER_NO = ?
AND MEMBER_PW =?
</entry>
----------------------- 매 페이지 마다 작동하는 footer.jsp 나 header.jsp 에
<c:if test="${!empty sessionScope.message}">
<script>
alert("${message}");
</script>
<c:remove var = "message" scope="session"/>
</c:if>
넣어주자 .
입력한 session의 "message" 들이 result 값을 받아 작동한다 .
'SelfStudy > JDBC' 카테고리의 다른 글
JDBC 활용 연습용10. ( 비밀번호 변경 ) (0) | 2023.04.04 |
---|---|
JDBC 활용 연습용9. ( 회원정보수정 ) (0) | 2023.03.31 |
JDBC 활용 연습용8. ( 로그인후 마이페이지 창 (사진업로드) ) (0) | 2023.03.30 |
JDBC 활용 연습용7. ( 회원가입 + DB저장 ) (0) | 2023.03.30 |
JDBC 활용 연습용6. ( 닉네임 중복확인 + 전화번호유효성검사 ) (0) | 2023.03.29 |
Comments