본문 바로가기
프로젝트/자바 빈과 JSP만을 사용한 게시판 만들기

18장 삭제 처리

by IT여행자 2020. 5. 10.
728x90

이번 포스팅에서는 게시물을 삭제하는 부분을 만들겠습니다. 삭제와 관련된 별도의 폼 페이지는 없습니다. 스크립트를 통해 삭제 정보를 BoardController에게 보내고 BoardController는 관련 정보를 BoardDao에 전달하여 삭제 처리를 한 후 그 결과를 result.jsp 페이지에 보내 삭제된 결과만을 alert()창으로 표시한 후 다시 select.jsp를 호출하여 목록을 표시해 주도록 작성하였습니다. 당연한 이야기 이지만, 암호가 다르거나 댓글이 있는 글은 삭제되지 않습니다.

 

그럼, 삭제 프로세스의 흐름을 간단한 그림으로 살펴 보도록 하겠습니다.

 

삭제 프로세스

 

1. 먼저 사용자는 상세보기(view.jsp) 페이지에서 삭제 버튼을 클릭합니다.

<input type='button' value='삭제' id='btnDelete' />

2. 삭제 버튼이 클릭되면 javascript 파트에서 암호를 입력 받고, 페이징 처리와 serial 번호를 가지고 result.jsp 페이지를 호출합니다. 이 때 result.jsp 페이지는 입력, 수정, 삭제, 댓글에서 공통으로 사용하는 페이지 이므로 job=deleteR 값으로 파라미터를 전달 합니다.

 

// 삭제 버튼 클릭시
	if($id('btnDelete')!=null){
		let btn = $id('btnDelete');
		btn.onclick = function(){
			
			let pwd = prompt("암호...");
			if(pwd != null && pwd != ''){
				let frm = $id('frmInput');
				frm.pwd.value = pwd;
				frm.action = url + 'result.jsp?job=deleteR'; 
				frm.submit();
			}
		}
	}

 

3.  result.jsp 에서는 관련 정보를 BoardController.java에게 넘깁니다.

4. BoardController에서는 전달받은 job 파라미터에 따라 deleteR()메서드를 호출합니다.

 

public class BoardController {
	...
    public BoardController(HttpServletRequest req, HttpServletResponse resp) {
    	...
		String job = "";
		job = req.getParameter("job");
		if(job != null) {
			switch(job) {
			case "deleteR"   : deleteR();break;
            ...
			}
		}
	}

5. deleteR()에서는 관련 정보를 가공하여 BoardDao의 delete()메서드를 호출합니다. 그 처리 결과는 request영역에 담겨저 result.jsp 페이지에 넘겨지며, result.jsp 페이지 에서는 처리 결과를 화면에 표시한 후 index.jsp페이지를 호출함으로 다시 게시판 목록 페이지로 연결 됩니다.

 

[관련동영상-게시물 삭제하기(묵음)]