Web/Servlet-JSP

Servlet-JSP MVC01 (4) - 회원삭제

now0204 2023. 5. 26. 09:04

memberList에서 삭제버튼 추가해서 누르면 회원정보가 삭제되도록 하자.

 

1. memberListController에 view부분에 삭제버튼 추가하기

 

각 회원정보 칸 마다 삭제버튼을 추가해야 삭제하고 싶은 회원을 삭제할 수 있을 것이다.

멤버리스트를 출력하는 for문에 삭제버튼을 추가하자

out.println("<th><a href='/MVC01/memberDelete.do?num="+m.getNum()+"'>삭제</a></th>");

 > 삭제버튼을 <a>태그를 통해 추가하였다. 이때 태그를 누르면 넘어갈 url에 쿼리스트링을 추가해서 각 회원리스트별 

num정보가 함께 넘어가도록 했다. 

> 이는 삭제를 위해 sql문을 실행할 때, 삭제할 멤버를 구분할 key값으로 num을 사용하기 위해 넘겼다.

> 이제 memberDelete.do를 받을 컨트롤러를 추가하자.

 

2. MemberDeleteController 추가하기

 

MemberDeleteController는 요청을 받아 회원정보를 삭제하기 위해,

- num을 수집해서 DAO에 넘기고, DAO가 sql을 실행해서 DB에서 회원삭제

- 쿼리성공여부에 따라 다시 memberList를 보여준다. (redirect)

int num = Integer.parseInt(request.getParameter("num"));
MemberDAO dao = new MemberDAO();
int cnt = dao.DeleteMember(num);
	if(cnt >0) {
	response.sendRedirect("/MVC01/memberList.do");
	}else {
		throw new ServletException("not insert");
	}

 

3. DB에서 회원삭제하기

public int DeleteMember(int num) {
		String sql = "delete from member where num =?";
		int cnt=-1;
		getConnect();
		try {
			ps = conn.prepareStatement(sql);
			ps.setInt(1, num);
			cnt = ps.executeUpdate(); //1 or 0

		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			dbClose();
		}
		return cnt;
	}

 

- 회원정보를 넣을 때와 같이 sql에 ?파라미터를 추가한 뒤에 ps를 통해 값을 전달

- 최종 쿼리문을 돌렸을 때 성공여부 반환 값 담아서 컨트롤러로 넘기기

 

 

정리 - 회원정보를 삭제해 보았다. 

 

DB에서 데이터 삭제할 때는 이를 식별할 정보를 같이 넘겨줘야함 - <a>태그일때 get방식으로 소통할 수 있음 

 

삭제를 요청하면, 해당 요청을 컨트롤러가 받기 : 이때  DB에서 각각의 회원 레코드를 식별할 수 있는 값을 같이 넘겨줘야함(기본키 등)

컨트롤러는 같이 넘어온 값을 수집해서 DAO에 넘김 

쿼리 성공여부에 따라 redirect -> memberList.do 

 

샤오롱바오 삭제한 뒤 나타나는 리스트

 

참고자료:  인프런 나프1탄 - 박매일