회원서비스
< 회원 탈퇴 >
1. 회원탈퇴 화면
- 회원탈퇴 버튼
<button type="button" class="btn btn-sm btn-danger" data-toggle="modal" data-target="#deleteMember">회원탈퇴</button>
- 버튼 클릭 시 모달창이 보이도록 함
- 모달창에 form태그와 submit 버튼 달아서 요청, 요청시 전달값 보내기
<!-- 회원 탈퇴 모달창 -->
<div class="modal" id="deleteMember">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">회원 탈퇴</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<form action="<%= contextPath %>/deleteMember.me" method="post">
<table>
<tr>
<td>비밀번호</td>
<td><input type="password" name="userPwd" required></td>
</tr>
</table>
<br>
<button type="submit" class="btn btn-sm btn-primary"">탈퇴</button>
</form>
</div>
</div>
</div>
</div>
2. MemberDeleteController.java (Servlet)
- 매핑값 : /deleteMember.me
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String userPwd = request.getParameter("userPwd");
// session에 담겨있는 기존 로그인된 사용자의 정보를 얻어옴
HttpSession session = request.getSession();
String userId = ((Member)session.getAttribute("loginUser")).getUserId();
int result = new MemberService().deleteMember(userId, userPwd);
if (result > 0) { // 탈퇴 성공
session.removeAttribute("loginUser");
response.sendRedirect(request.getContextPath());
} else { // 탈퇴 실패
request.setAttribute("errorMsg", "회원 탈퇴에 실패했습니다.");
request.getRequestDispatcher("views/common/errorPage.jsp").forward(request, response);
}
}
3. MemberService.java (자바Class)
- deleteMember()
public int deleteMember(String userId, String userPwd) {
Connection conn = JDBCTemplate.getConnection();
int result = new MemberDao().deleteMember(conn, userId, userPwd);
if (result > 0) { // 탈퇴 성공
JDBCTemplate.commit(conn);
} else { // 탈퇴 실패
JDBCTemplate.rollback(conn);
}
JDBCTemplate.close(conn);
return result;
}
4. MemberDao.java
- deleteMember()
public int deleteMember(Connection conn, String userId, String userPwd) {
// UPDATE : STATUS = 'Y' => STATUS = 'N'
int result = 0;
PreparedStatement pstmt = null;
String sql = prop.getProperty("deleteMember");
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userId);
pstmt.setString(2, userPwd);
result = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCTemplate.close(pstmt);
}
return result;
}
- SQL문
- 회원 정보를 완전히 삭제하는 DELETE문이 아닌, STATUS컬럼의 값을 바꾸는 UPDATE문 실행
<entry key="deleteMember">
UPDATE
MEMBER
SET
STATUS = 'N'
WHERE
USER_ID = ? AND USER_PWD = ?
</entry>
'개발 > Web' 카테고리의 다른 글
[Java] Sevlet/JSP - 일반게시판 - 게시글 리스트 조회 / 페이징 처리 (0) | 2022.11.18 |
---|---|
[Java] Sevlet/JSP - 공지사항 - 공지사항 리스트 조회 (0) | 2022.11.18 |
[Java] Sevlet/JSP - 회원서비스 - 회원 정보 변경 (0) | 2022.11.18 |
[Java] Sevlet/JSP - 회원서비스 - 마이페이지 (0) | 2022.11.18 |
[Java] Sevlet/JSP - 회원서비스 - 회원가입 (0) | 2022.11.18 |