** 이전에 JSP로 만들었던 코드를 이용해 이를 서블릿으로 구현해보았다.
[JSP] 13강 Part2 - 게시글 삭제
본 포스팅은 정보 제공용이 아닌 유튜브 동빈나님의 JSP 게시판 만들기 강좌 13강을 바탕으로 보고 배운 것을 직접 정리해본 포스트 입니다. ** 간략 프로세스 view.jsp 삭제버튼-> deleteAction.jsp -> bbsD
egu99.tistory.com
- 글의 삭제는 레코드의 완전 삭제가 아닌 이용불가 상태, 즉 bbsAvailable이 0인 상태로 업데이트 하는 식으로 수정하였다.
- 따라서 수정과 삭제는 거의 흡사한 코드를 가졌다.
- 이번에도 제 3자가 글을 지울 수 없게끔 하였다.
** deleteControl.java - doGet()
@WebServlet("/delete")
public class DeleteControl extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int bbsID =0;
//bbsID 전달 확인
String bID = request.getParameter("bbsID");
if(bID != null)
bbsID = Integer.parseInt(bID);
//DAO준비
BbsDAO bao = new BbsDAO();
//인증을 위해 게시글 가져오기
Bbs bbs = bao.getBbs(bbsID);
//session 로그인 확인
HttpSession session = request.getSession();
String suserID = (String)session.getAttribute("userID");
PrintWriter out = response.getWriter();
//게시물 유효성 확인
if(bbsID == 0 || bID == null) {
out.println("<script>");
out.println("alert('유효하지 않은 게시물입니다.');");
out.println("location.href='bbs'");
out.println("</script>");
//로그인 확인
}else if(suserID == null) {
out.println("<script>");
out.println("alert('로그인 하세요.');");
out.println("location.href='login'");
out.println("</script>");
//권한 확인
}else if(!bbs.getUserID().equals(suserID)) {
out.println("<script>");
out.println("alert('권한이 없습니다.');");
out.println("location.href='bbs'");
out.println("</script>");
//모두 okay시
} else {
//삭제 메서드
int result = bao.delete(bbsID);
switch (result) {
case 1:
out.println("<script>");
out.println("alert('글이 삭제되었습니다.');");
out.println("location.href='bbs'");
out.println("</script>");
break;
case -1:
out.println("<script>");
out.println("alert('데이터 베이스 오류.');");
out.println("location.href='bbs'");
out.println("</script>");
break;
}
}
}
}
- view에서 삭제 버튼시 bbsID와 함께 이쪽으로 온다.
- 1) 유효한 게시물인지? - bbsID가 전달받지 못했거나 이용불가 게시물일 때 게시판으로
- 2) 로그인 상태인지?- 세션에서 유저 정보가 없을 땐 로그인 페이지로.
- 3) 권한이 있는지? - 글의 작성자와 로그인한 아이디가 다른 경우 메인 페이지로
- 모두 okay라면 BbsDAO의 delete()를 통해 삭제를 시도한다.
- 이 메서드의 반환값에 따라 알림과 이동을 해준다.
- 이번엔 switch문으로 해보았다.
** BbsDAO - delete()
//글 삭제하기
public int delete(int bbsID) {
String sql = "UPDATE BBS SET bbsAvailable = 0 where bbsID=?";
try {
PreparedStatement pst = conn.prepareStatement(sql);
pst.setInt(1, bbsID);
return pst.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return -1;
}
- 기존의 삭제는 레코드를 완전히 삭제하였으나 available=0이 되어 이용이 불가한 게시글로 수정하는 쪽으로 수정하였다.
- 레코드가 성공적으로 삭제처리가 되었다면 1을, 데이터베이스 오류는 -1을 반환한다.
'웹 개발 한걸음' 카테고리의 다른 글
[JavaScript] AJAX / XMLHttpRequest 파헤쳐보기 (0) | 2021.04.14 |
---|---|
[JavaScript] 자바스크립트 기초 배워보기 (0) | 2021.04.06 |
[Servlet] 게시물 수정 구현하기 (0) | 2021.04.05 |
[Servlet] 상세 페이지 구현하기 (0) | 2021.03.31 |
[Servlet] JSTL의 조건문으로 HTML 조건처리 하기 (수정) (0) | 2021.03.30 |