Servlet&JSP

Step02_DB (jsp DELETE)

bono.html 2022. 8. 16. 12:42

 

본 게시글은 이전 게시글에서 만든 페이지에 DELETE기능을 추가하는 내용의 게시글이다.

2022.08.16 - [java] - Step02_DB (jsp INSERT)

 

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>인덱스 페이지 입니다.</h1>
	<ul>
		<li><a href="member/list.jsp">회원목록보기</a></li>
	</ul>
</body>
</html>

index.jsp

 

 

list.jsp

 

<%@page import="test.member.dto.MemberDto"%>
<%@page import="java.util.List"%>
<%@page import="test.member.dao.MemberDao"%>
<%@page import="test.util.DbcpBean"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//MemberDao 객체의 참조값을 얻어와서
	MemberDao dao=MemberDao.getInstance();
	//회원목록을 얻어온다.
	List<MemberDto> list=dao.getList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/list.jsp</title>
</head>
<body>
<div class="container">
	<a href="insertform.jsp">회원추가</a>
	<h1>회원 목록입니다.</h1>
	<table>
		<thead>
			<tr>
				<th>번호</th>
				<th>이름</th>
				<th>주소</th>
				<th>삭제</th>
			</tr>
		</thead>
		<tbody>
		<%for(MemberDto tmp:list) {%>
			<tr>
				<td><%=tmp.getNum() %></td>
				<td><%=tmp.getName() %></td>
				<td><%=tmp.getAddr() %></td>
				<td>
					<a href="delete.jsp?num=<%=tmp.getNum() %>">삭제</a>
				</td>
			</tr>
		<%} %>
		</tbody>
	</table>
</div>
</body>
</html>

list.jsp

삭제 링크를 추가했다. 링크를 누르면 delete.jsp?num 로 이동한다.

예시에서 a태그 코드는 form 태그에서 사용하던 get 방식과 유사하다.

2022.08.12 - [Servlet&JSP] - Step01_Servlet(form연결하기, get post 비교, Servlet jsp 비교)

 

 

MemberDao.java

이전 게시글에서 사용하던 MemberDao에서 delete메소드를 추가하였다.

아래의 코드는 추가한 delete 메소드이며 이전 게시글에서 만들어둔 dbupdate 템플릿을 활용하여 일부(sql 문과 바인딩)만 수정하였다.

 

   //인자로 전달되는 번호에 해당하는 회원의 정보를 삭제하고 성공여부를 리턴하는 메소드
   public boolean delete(int num) {
	    Connection conn = null;
		PreparedStatement pstmt = null;
		int updatedRowCount = 0;
		try {
			conn = new DbcpBean().getConn();
			//실행할 sql 문
			String sql = "DELETE FROM member"
					+ " WHERE num=?";
			pstmt = conn.prepareStatement(sql);
			//? 값을 바인딩 할게 있으면 바인딩하기
			pstmt.setInt(1, num);
			//insert, update, delete 를 수행하고 변화된 row 의 갯수를 리턴 받기
			updatedRowCount = pstmt.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
			}
		}
		//변화된 row 의 갯수가 0 보다 크면 작업 성공
		if (updatedRowCount > 0) {
			return true;
		} else {//그렇지 않으면 작업 실패
			return false;
		}
   }

 

 

delete.jsp

<%@page import="test.member.dao.MemberDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	//1. get 방식 파라미터로 전달되는 삭제할 회원의 번호를 읽어온다.
	int num=Integer.parseInt(request.getParameter("num"));
	//2. DB 에서 해당 회원의 정보를 삭제한다
	boolean isSuccess=MemberDao.getInstance().delete(num);
	//3. 응답한다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/member/delete.jsp</title>
</head>
<body>
	<%if (isSuccess){%>
		<script>
			alert("삭제 했습니다.");
			location.href="list.jsp";
		</script>
	<%}else{ %>
		<script>
			alert("삭제 실패!");
			location.href="list.jsp";	
		</script>
	<%} %>
</body>
</html>

delete.jsp