차근차근 개발자 되기

JSP

76일차: Model 2 게시판(4): 글 삭제_ 2021.10.05

wellow 2021. 10. 5. 21:59

 

목차

• 글 삭제(Delete)

 

 

글 삭제(Delete)

 

1) 뷰 페이지(qna_board_view.jsp)

- 상세 페이지에서 하단의 ‘삭제’ 버튼을 클릭하면 해당 글을 삭제할 수 있게 한다.

- 이때, 클릭을 하면 click 이벤트가 발생하므로 ‘onClick’ 이벤트로 처리하고, location 객체로 이동할 페이지를 지정한다.

- 페이지를 이동할 때 해당 글의 번호 값(board_num)과 해당 글이 속한 페이지 값(page)를 get 방식으로 전달해야 한다.

- “/BoardDeleteAction.do”로 컨트롤러 클래스를 호출한다.

- qna_board_view.jsp BoardFrontController.java

 

2) 컨트롤러 클래스(BoardFrontController.java)

- 상세 페이지(qna_board_view.jsp)에서 “/BoardDeleteAction.do”로 요청한 값을 받아 처리한다.

- forward 객체를 생성해서 전송 방식과 이동할 페이지 경로를 설정한다.

- 상세 페이지에서 ‘삭제’ 버튼 클릭 시 get 방식으로 전달한 값을 받기 위해서는 dispatcher 방식으로 포워딩해야 포워딩된 페이지에서 EL 태그의 param 객체로 값을 받을 수 있다.

(ex. value="${param.board_num}" )

- 뷰 페이지인 글 삭제 폼(qna_board_delete.jsp)으로 포워딩한다.

- BoardFrontController.java qna_board_delete.jsp

 

3) 뷰 페이지(qna_board_delete.jsp)

- 글 삭제 폼에서는 비밀번호를 입력하도록 한다.

- 사용자가 입력하는 비밀번호 외에도, <input> 태그의 ‘hidden’ 속성으로 글의 번호 값과 page 값을 전달한다.

- 글 삭제 폼에서 get 방식으로 전달한 값을 EL 태그의 내장 객체인 param으로 받을 수 있다.

(ex. <input type="hidden" name="page" value="${param.page}"> )

- EL 태그를 사용하지 않고 값을 받으려면 request.getParameter()로 받아서 표현식 태그로 출력할 수 있다.

- ‘삭제’ 버튼을 누르면 <form> 태그에서 action으로 지정된 “/BoardDelete.do”로 컨트롤러를 호출한다.

- qna_board_delete.jsp BoardFrontController.java

 

4) 컨트롤러 클래스(BoardFrontController.java)

- 뷰 페이지(qna_board_delete.jsp)에서 “/BoardDelete.do로 요청한 값을 받아 처리한다.

- 서비스 클래스인 BoardDelete의 객체를 생성하고 execute() 메소드를 호출한다.

 

5) 서비스 클래스(BoardDelete.java)

- 삭제 폼에서 전달하는 값을 받는다.(번호 값, 페이지 값, 비밀번호)

- DB와 연동하기 위해 DAO 객체를 생성하고, 상세 정보를 구하는 getDetail() 메소드를 호출한다.

- DB에 저장된 비밀번호와 사용자가 삭제 폼에서 입력한 비밀번호를 비교한다.

- 비밀번호가 일치하면 삭제(delete)를 하는 메소드를 호출해서 글을 삭제한다.

- 비밀번호가 일치하는 경우, 첨부 파일이 있으면 File 객체를 생성해서 첨부 파일도 삭제한다.

- 비밀번호가 일치하지 않으면 alert() 메소드로 비밀번호가 일치하지 않는다는 알림창을 띄우고, history 객체를 이용해서 수정 폼으로 돌아가도록 설정한다.

- ActionForward 객체를 생성하고 전송 방식과 경로를 설정한 후 리턴한다.

- “/BoardListAction.do”로 컨트롤러를 호출하고, 해당 글이 속한 페이지 값을 get 방식으로 가지고 간다.

- BoardDelete.java BoardFrontController.java

 

6) 컨트롤러 클래스(BoardFrontController.java)

- 서비스 클래스(BoardDelete.java)에서 “/BoardListAction.do”로 요청한 값을 받아 처리한다.

- BoardFrontController.java qna_board_list.jsp