본문으로 바로가기

[JSP개발] 게시판 - 댓글 삭제

category 코딩/JSP 2017. 1. 4. 14:38







1. 개요





 난 포스팅 :  [JSP개발] 게시판 - 댓글 답변 구현



댓글을 삭제하는 기능을 구현할 것이다. 댓글 삭제의 경우 게시글이나 방명록과 마찬가지로 삭제 시 하위에 있는 답글도 모두 삭제되도록 한다. 그리고 게시글이 삭제되면 댓글도 모두 삭제되게 하기 위해 댓글 테이블에 제약조건을 추가해준다.



 JSP

  • BoardDetailForm.jsp : 상세보기 화면에는 댓글 삭제와 관련된 코드를 추가한다.


 Java

  • CommentDeleteAction.java : 댓글 삭제 Action이다.

  • CommentDAO.java  : DAO에는 댓글을 삭제하는 메서드를 추가한다.


 Table

  • BOARD_COMMENT : 게시글 삭제 시 댓글도 같이 삭제되도록 하기 위해 제약조건을 추가한다.




2. 소스 코드



 BOARD_COMMENT 테이블


댓글 테이블은 게시판 테이블의 PK를 FK로 가지고 있다. 현재는 댓글이 있는 게시글을 삭제하려고 하면 FK를 사용하는 테이블이 있다며 삭제가 되지 않는다. 그래서 게시글 삭제 시 게시글에 달린 댓글도 모두 삭제되게 하기 위해 제약조건을 수정해야 한다.




■ BoardDetailForm.jsp




[삭제] 클릭 시 cmDeleteOpen( )을 호출하도록 한다. 이때 댓글의 글 번호를 전달한다. 




스크립트에는 삭제창을 여는 함수를 추가한다. 삭제창은 별도로 화면을 만들지 않고 confirm( )을 이용한다. confirm( )은 확인, 취소 버튼이 있는 alert 이다. 확인을 누르면 true를 취소를 누르면 false를 리턴한다.


확인을 눌렀을 경우 deleteCmt( )를 호출한다. 




댓글 삭제는 Ajax를 이용한다. 143줄을 보면 
XMLHttpRequest 상태 변화 시 호출될 함수를 지정하는데, 여기서는 기존에 checkFunc를 그대로 사용할 것이다.




■ CommentDeleteAction.java




BoardDetailForm으로부터 넘겨받은 댓글 글 번호를 이용하여 댓글을 삭제한다. 댓글이 정상적으로 삭제되면 BoardDetailForm으로 1을 전달한다.




■ CommentDAO.java 




DAO에는 댓글을 삭제하는 메서드를 추가한다. 
  • 202~207줄 : 삭제하려는 댓글 글번호(comment_num)부터 계층을 이루는 모든 댓글을 검색하여 같이 삭제하도록 한다.




■ CommentCommand.properties


댓글 삭제에 대한 명령어를 추가한다.





3. 실행 결과





------로 적혀있는 댓글을 삭제할 것이다.





DB를 보면 테이블에 댓글이 저장되어 있는 것을 볼 수 있다.





[삭제] 클릭 시 창이 뜬다. 여기서 확인을 누른다.





위에서 본 -------- 댓글과 댓글의 답글 모두 삭제되었다.





테이블을 보면 해당 글이 모두 삭제된 것을 확인할 수 있다.





그러면 [삭제테스트 게시글]이라는 글을 삭제해보자.





게시글을 삭제하면 거기에 달려있던 댓글인 댓글 [삭제 테스트][삭제 테스트 답글] 모두 같이 삭제된 것을 볼 수 있다.





4. 소스코드 다운로드 (war 파일)



JSP_DEV.war



RSS구독 링크추가 트위터 이메일 구독