본문 바로가기
혼자서 개발새발

Spring) 게시판에서 글을 삭제(이승기 아님) 해보자!

by 휴일이 2022. 11. 22.

 

삭제는 아쥬 간단하다!

1) 게시글 들어가면 삭제 버튼이 뜸

2) 삭제하시겠습니까? 확인하면

3) 게시글이 삭제되고

4) /board/list로 돌아감

 

 

 

 

Controller

 

    @GetMapping("/remove")
    public String remove(HttpSession session, Integer no,HttpServletRequest request,RedirectAttributes rattr,
                         Integer page, Integer pageSize) {

        if(loginCheck(request)) {
            return "login";
        }

        try {
            // no 제대로 들어왔는지 확인
            if(no == 0) {
                throw new Exception("can't search no");
            }

            //세션에서 id 가져오기
            String id = (String) session.getAttribute("id");
            int check = service.remove(id, no);

            // 삭제 안 되면 오류 발생
            if(check == 0) {
                throw new Exception("can't remove this");
            }
            rattr.addFlashAttribute("msg","DELETE OK");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("e = " + e);
            rattr.addFlashAttribute("msg", "DEL_ERR");
            return "redirect:/board/list?page="+page+"&pageSize="+pageSize;
        }

        return "redirect:/board/list";
    }

 

 

저번과 마찬가지로

RedirectAttributes를 사용해서 삭제 완료를 띄웠다!

세션에서 id를 가져오고 no을 가져왔는데

id와 no이 틀리면 어차피 remove가 안된다

 

그리고 삭제가 실패할 경우,

첫 페이지로 돌아가면 너무 불쌍하니까(ㅠㅠ)

원래 있던 페이지로 되돌려준다!

 

 

 

board.jsp

<form id = "form" action="" method="POST">
    <input type="text" value="${boardDto.no}" name = "no" hidden>
    <input type="text" value="${p.page}" name = "page" hidden>
    <input type="text" value="${p.pageSize}" name = "pageSize" hidden>
    <c:if test="${mode ne 'new'}">
    <button type="button" id = "removeBtn">삭제</button> <br>
    <button type="button" id = "writeNewBtn" onclick="location.href='/board/write'">글쓰기</button>
    </c:if>
    </form>

<script>
        $('#removeBtn').click(function () {
            if(!confirm("정말 삭제하시겠습니까?")) return;
            $("#form").attr("method", "GET");
            $("#form").attr("action", "/board/remove");
            $("#form").submit();
        })
</script>

 

page랑 pageSize 값을 주기 위해 hidden input 값을 주었고

글쓰기 모드가 아닐 때만 삭제 버튼이 보이게 만들었다

 

삭제는 confirm 으로 확인 취소를 받은 뒤

확인일 경우에만 submit이 되도록 한다!

 

 

boardList.jsp

 

<script>
    let msg = "${msg}";
    if(msg == "WRITE OK") alert("등록 완료");
    if(msg == "DELETE OK") alert("삭제 완료");
    if(msg=="DEL_ERR") alert("삭제 실패");
</script>

 

alert도 잊지 않는다 !_!

 

 

 

 

그러면 결과!

 

내가 쓴 글

 

삭제 확인을 누르면?

 

삭제 완료!!

 

내가 쓰지 않은 글을 삭제하면

 

 

삭제 실패가 뜨고

 

 

원래 있던 페이지로 돌아온다~!

 

 

 

 

 

 

내일은 수정을 해보아야겠다!!

728x90