Backend/Spring

[Spring] 게시판 글 삭제

Deeb 2022. 1. 19. 15:13

boardView.jsp

<c:if test="${loginMember.memberNo == board.memberNo }">
    <%-- 로그인된 회원과 해당 글 작성자가 같은 경우에만 수정, 삭제 버튼 노출--%>
    <button id="deleteBtn" class="btn btn-primary float-right mr-2" onclick="deleteBoard()">삭제</button> 
    <button id="updateBtn" class="btn btn-primary float-right mr-2" onclick="updateForm();">수정</button> 
</c:if>

- 삭제 버튼 클릭시 실행 될 함수 지정

 

board.js

// 삭제 버튼 클릭 시 동작
function deleteBoard(){
	if(confirm("정말 삭제하시겠습니까?")){
	document.requestForm.action = "../delete";
	document.requestForm.method = "POST";
	document.requestForm.submit();
	}
 }

- 스크립트로하면 직접적인 주소 노출을 막을 수 있다

그리고 파라미터를 막을 수 있다

 

ex) /board/view/500 -> /board/delete

 


 

BoardController

삭제는 delete 구문이 아닌  STATUS_CD 4로 update 진행

@RequestMapping(value="delete", method = RequestMethod.POST)
public String deleteBoard(int boardNo,
        @RequestParam(value="cp", required = false, defaultValue = "1") int cp,
        RedirectAttributes ra) {

    // 게시글 삭제  Service 호출
    int result = service.deleteBoard(boardNo);

    String path = null;
   
    if(result > 0) {
        Util.swalSetMessage("게시글 삭제 성공", null, "success", ra);
        path = "list?cp=" + cp;
    } else {
        Util.swalSetMessage("게시글 삭제 실패", null, "error", ra);
        path = "view/" + boardNo +"?cp=" + cp;
    }
    return  "redirect:" + path;
}

성공 시 "list?cp=" + cp로 리다이렉트 + 성공 메세지
실패 시 삭제하려던 글 상세조회 페이지로 리다이렉트 + 실패 메시지

 

BoardService

/** 게시글 삭제
 * @param boardNo
 * @return result
 */
int deleteBoard(int boardNo);

 

BoardServiceImpl

//게시글 삭제
@Override
public int deleteBoard(int boardNo) {
    return dao.deleteBoard(boardNo);
}

 

BoardDAO

/** 게시글 삭제
 * @param boardNo
 * @return
 */
public int deleteBoard(int boardNo) {
    return sqlSession.update("boardMapper.deleteBoard", boardNo);
}

 

board-mapper

<!-- 게시글 삭제 -->
<update id="deleteBoard" parameterType="_int">
    UPDATE BOARD SET
    STATUS_CD = 4
    WHERE BOARD_NO = #{boardNo}
</update>

 

반응형