본문 바로가기

웹 개발 한걸음

[JSP] 13강 Part2 - 게시글 삭제

본 포스팅은

정보 제공용이 아닌

유튜브 동빈나님의 JSP 게시판 만들기 강좌 13강을

바탕으로 보고 배운 것을 직접 정리해본 포스트 입니다.


 

** 간략 프로세스

  • view.jsp 삭제버튼-> deleteAction.jsp -> bbsDAO.jsp의 delete() 호출

 

 


 

** view.jsp

<%
	if( userID != null && userID.equals(bbs.getUserID())){
%>
		<a href="update.jsp?bbsID=<%=bbsID %>" class="btn btn-info">수정</a>
		<a onclick="return confirm('정말 삭제하시겠습니까?')" href="deleteAction.jsp?bbsID=<%=bbsID %>" class="btn btn-danger">삭제</a>
<% 	
	}
%>

 

  • 작성자와 로그인한 사람과 같을 때 수정과 삭제가 보이도록 했었다.
  • 삭제 버튼시 bbsID값과 함께 deleteAction으로 이동한다.
  • onclick = ""은 클릭시 이벤트를 넣어주는 속성이다. 
  • return confirm('')은 작성한 확인 메시지와 함께 한번 더 확인하는 창을 띄운다. 예를 누르면 다음 동작이 실행된다.
  • 이건 처음에 자바스크립트의 함수인줄 알았는데 검색도 해보고 자바스크립트 경로를 지워보기도 했으며 직접 새 jsp로 만들어본 결과 저것만으로도 잘 작동하는 걸 보니 html의 자체 속성인듯 하다.

 


 

** deleteAction.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <!-- 클래스 import -->
 <%@ page import = "bbs.BbsDAO" %>
 <%@ page import = "java.io.PrintWriter" %>  
 <%@ page import = "bbs.Bbs" %>
 <!-- 요청의 인코딩 타입을 UTF-8로 지정  -->
 <% request.setCharacterEncoding("UTF-8"); %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	//로그인 세션 확인
	String userID = null;
	if(session.getAttribute("userID")!=null){
		userID = (String)session.getAttribute("userID");
	}
	//게시물 유효성 확인
	int bbsID = 0;
	if(request.getParameter("bbsID") != null){
		bbsID = Integer.parseInt(request.getParameter("bbsID"));
	}
	//게시물 번호가 유효하지 않은 번호라면
	if(bbsID == 0){
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('유효하지 않는 글입니다.')");
		script.println("location.href = 'bbs.jsp'");
		script.println("</script>");
	}
	//게시물 가져오기.
	Bbs bbs = new BbsDAO().getBbs(bbsID);
	//작성자와 로그인한 회원의 아이디와 다르다면
	if(!userID.equals(bbs.getUserID())){
		PrintWriter script = response.getWriter();
		script.println("<script>");
		script.println("alert('권한이 없습니다.')");
		script.println("location.href = 'bbs.jsp'");
		script.println("</script>");
		
	} else { //권한이 있는 경우
		
			BbsDAO bao = new BbsDAO();
			//게시물 삭제
			int result = bao.delete(bbsID);
			
			if(result == -1){
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("alert('삭제에 실패했습니다.')");
				script.println("histroy.back()");
				script.println("</script>");
				 
			}else {
				PrintWriter script = response.getWriter();
				script.println("<script>");
				script.println("alert('글이 삭제되었습니다.')");
				script.println("location.href = 'bbs.jsp'");
				script.println("</script>");

			}	
	}
	
	%>


</body>
</html>

 

  • 로그인 세션 확인, 게시물의 유효성, 작성자 권한 확인 등 updateAction.jsp와 거의 흡사하다. 
  • 받은 bbsID를 인자로 BbsDAO의 delete 메서드를 호출한다.
  • 여느 때처럼 반환값에 따라 알림과 이동을 해준다.

 


 

** bbsDAO.java

//글 삭제하기
public int delete(int bbsID) {
			
	String sql = "DELETE FROM BBS WHERE bbsID=?";
	try {
				
		PreparedStatement pst = conn.prepareStatement(sql);
		pst.setInt(1, bbsID);	
		return pst.executeUpdate();
				
	} catch (Exception e) {
		e.printStackTrace();
	}
			
	return -1;
}
  • 인자로 받은 bbsID를 sql에 꽂아넣어 실행해준다.

 

 

 


** 결과 화면

상세 페이지
삭제 시도
삭제