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>
반응형
'Backend > Spring' 카테고리의 다른 글
[Spring] 댓글 목록 조회 (0) | 2022.01.19 |
---|---|
[Spring] 댓글 테이블, 클래스 구조 생성 (0) | 2022.01.19 |
[Spring] 게시글 글 수정 (0) | 2022.01.19 |
[Spring] 게시글 (상세조회) (0) | 2022.01.10 |
[Spring] 기본 세팅 (0) | 2022.01.10 |