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>
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>
삭제 링크를 추가했다. 링크를 누르면 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>