본문 바로가기
수업 문제(국비 지원)/JSP

[JSP] 2022.10.14 (deleteForm.jsp 페이지를 이용하여 게시물 삭제 부분 완성하기)

by byeolsub 2023. 4. 29.
 문제 : deleteForm.jsp 페이지를  이용하여 게시물 삭제 부분 완성하기

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- /jsp3/src/main/webapp/view/board/deleteForm.jsp --%>
<!DOCTYPE html><html><head>
<meta charset="UTF-8">
<title>게시글삭제</title></head>
<body>
<hr>
<div class="container">
 <h2 id="center">게시물 삭제</h2>
 <form action="delete" method="post">
	<div class="form-group">
		<input type="hidden"  name="num" value="${param.num}">
		<label >Password:</label>
		<input type="password" class="form-control" name="pass">
	</div>
	<div id="center" style="padding: 3px;">
		<button type="submit" class="btn btn-dark">게시물삭제</button>
	</div>
 </form>
</div>
</body>
</html>

 


📌 1. BoardController.java 추가 - 화면에 보이게 추가.(삭제 버튼을 누르면 화면이 뜨게끔)

@RequestMapping("deleteForm")
	public String deleteForm (HttpServletRequest request, HttpServletResponse response) { 
		return "/view/board/deleteForm.jsp";
	}

1. BoardController.java 추가

@RequestMapping("delete")
	public String delete (HttpServletRequest request, HttpServletResponse response) { 
		int num = Integer.parseInt(request.getParameter("num"));
		String pass = request.getParameter("pass");
		Board board = dao.selectOne(num);
		String msg = "비밀번호가 틀립니다.";
		String url = "deleteForm?num=" + num;
		if(pass.equals(board.getPass())) {
			if(dao.delete(num)) {
				msg = board.getWriter() + "님의 게시글이 삭제 되었습니다.";
			} else {
				msg = "게시글 삭제시 오류가 있습니다.";
			}
			url = "list?board=" + board.getBoardid();
		}
		request.setAttribute("msg",msg);
		request.setAttribute("url",url);
		return "/view/alert.jsp";
	}

2. BoardDao.java 수정

public Board selectOne(int num) {
		Connection conn = DBConnection.getConnection();
		PreparedStatement pstmt = null;
		String sql = "select * from board where num=?";
		ResultSet rs = null;
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1,num);
			rs = pstmt.executeQuery();
			if(rs.next()) {
				Board b = new Board();
				b.setNum(rs.getInt("num"));
				b.setWriter(rs.getString("writer"));
				b.setPass(rs.getString("pass"));
				b.setSubject(rs.getString("subject"));
				b.setContent(rs.getString("content"));
				b.setFile1(rs.getString("file1"));
				b.setBoardid(rs.getString("boardid")); // 이부분 누락 됨. 
				b.setGrp(rs.getInt("grp"));
				b.setGrplevel(rs.getInt("grplevel"));
				b.setGrpstep(rs.getInt("grpstep"));
				b.setReadcnt(rs.getInt("readcnt"));
				b.setRegdate(rs.getDate("regdate"));
				return b; //b : db의 내용을 저장
			}
		} catch  (SQLException e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(conn,pstmt,rs);
		}
		return null;
	}
  1. BoardDao.java 추가
public boolean delete (int num) {
		String sql = "delete from board where num=?";
		Connection conn = DBConnection.getConnection();
		PreparedStatement pstmt = null;
		try {
			pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1,num);
			return pstmt.executeUpdate() > 0;
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBConnection.close(conn,pstmt,null);
		}
		return false;
	}

- 결과