반응형
글 삭제 구현
지금까지 만든 게시판은 보안 요소가 전혀 없는 게시판이었습니다.
그래서 글 삭제 부분도 보안 요소는 없습니다(?)
글 삭제는 DELETE 쿼리만 실행하면 되기 때문에 엄청나게 간단합니다.
Controller
case "/deleteOk.do":
command = new DeleteCommand();
command.execute(request, response);
viewPage = "deleteOk.jsp";
break;
}
삭제 기능은 write나 update 같은 입력 폼이 필요하지 않으므로 deleteOk.do 만 사용합니다.
DeleteCommand
package com.command;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.beans.BookDAO;
public class DeleteCommand implements Command {
@Override
public void execute(HttpServletRequest request, HttpServletResponse response) {
int cnt = 0;
int uid = Integer.parseInt(request.getParameter("uid"));
try {
cnt = new BookDAO().delete(uid);
} catch (SQLException e) {
e.printStackTrace();
}
request.setAttribute("result", cnt);
}
}
삭제할 글의 uid 값은 GET parameter로 받습니다.
사실 이렇게 하면 보안 문제가 커서 절대 이렇게'만' 하면 안 됩니다.
로그인을 이용한 세션 값을 사용해 접근할 수 있게끔 만들어야 합니다.
BooDAO().delete()
public int delete(int uid) throws SQLException {
int cnt = 0;
try {
pstmt = conn.prepareStatement(D.SQL_BOOK_DELETE);
pstmt.setInt(1, uid);
cnt = pstmt.executeUpdate();
} finally {
close();
}
return cnt;
}
Query문
public static final String SQL_BOOK_DELETE = "DELETE FROM book WHERE bk_uid = ?";
GET 방식으로 받은 parameter 값을 WHERE 절에 넣어 uid와 bk_uid가 일치하는 글을 삭제합니다.
deleteOk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
int cnt = (Integer)request.getAttribute("result");
%>
<% if (cnt == 0) { %>
<script>
alert("삭제 실패");
history.back();
</script>
<% } else { %>
<script>
alert("삭제 성공");
location.href = "list.do";
</script>
<% } %>
앞서 작성한 writeOk, updateOk와 유사하게 삭제 실패인 경우 경고창을 띄우고, 삭제 성공인 경우 글 전체 목록 리스트로 이동합니다.
view.jsp
앞서 view.jsp에서 삭제하기 버튼 클릭 시 chkDelete() 함수를 실행하게 하였습니다.
<script>
function chkDelete(uid) {
let r = confirm("삭제하시겠습니까?");
if (r) {
location.href = "deleteOk.do?uid=" + uid;
}
}
</script>
view.jsp의 <head> 안 또는 <body> 안에 위 스크립트를 작성하면 됩니다.
confirm()을 통하여 삭제 버튼을 클릭하면 삭제하시겠습니까? 라는 안내 문구가 뜨게됩니다.
확인을 누르는 경우 r 값이 true이기 때문에 deleteOk.do로 이동합니다.
Github
https://github.com/MJKim99/JSP_Board_Book.git
반응형