today_is
[ jsp ] 회원기능 구현 (2) - 수정, 삭제 본문
오늘의 목표
회원 수정, 삭제 기능을 구현해보자
MemberDAO
( 중략 ... )
// userid를 전달받아서 테이블에서 레코드를 삭제하는 함수
public int delete(String userid) {
int row = 0;
String sql = "delete from member where userid = ?";
try {
conn = ds.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userid);
row = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally { close(); }
return row;
}
// 단일 객체 조회하기
public MemberDTO selectOne(String userid) {
MemberDTO dto = null;
String sql = "select * from member where userid = ?";
try {
conn = ds.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, userid);
rs = pstmt.executeQuery();
while(rs.next()) {
dto = mapping(rs);
}
} catch (SQLException e) {
e.printStackTrace();
} finally { close(); }
return dto;
}
// 객체 정보 수정하기
public int update(MemberDTO dto) {
int row = 0;
String sql = "update member "
+ " set"
+ " userpw = ?,"
+ " username = ?,"
+ " gender = ?,"
+ " email = ?"
+ " where"
+ " userid = ?";
try {
conn = ds.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, dto.getUserpw());
pstmt.setString(2, dto.getUsername());
pstmt.setString(3, dto.getGender());
pstmt.setString(4, dto.getEmail());
pstmt.setString(5, dto.getUserid());
row = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally { close(); }
return row;
}
}
modify.jsp
: 정보수정, 사용자에게 보이는 페이지
정보수정은 로그인이 되어있는 상태에서만 가능
dto라는 변수에 로그인된 계정의 정보들을 받아 올 수 있도록 하기 위해서는
MemberDAO에 selectOne() 함수가 필요함
form에는 value 를 통해서 기존 정보들을 보여준다 (사용자는 정보수정하는데에 용이해짐)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %>
<section>
<h3>정보수정 (modify.jsp)</h3>
<c:set var="dto" value="${dao.selectOne(param.userid) }" />
<form method="POST" action="modify-action.jsp">
<p><input type="text" name="userid" value="${dto.userid }" placeholder="ID" required readonly></p>
<p><input type="password" name="userpw" value="${dto.userpw }" placeholder="Password" required autofocus></p>
<p><input type="text" name="username" value="${dto.username }" placeholder="Name" required></p>
<p><input type="email" name="email" value="${dto.email }" placeholder="foo@bar.com" required></p>
<p>
<label><input type="radio" name="gender" value="남성" ${dto.gender == '남성' ? 'checked' : '' } required>남성</label>
<label><input type="radio" name="gender" value="여성" ${dto.gender == '여성' ? 'checked' : '' } required>여성</label>
</p>
<p><input type="submit" value="정보수정"></p>
</form>
</section>
</body>
</html>
modify-action.jsp
: 정보수정을 처리할 페이지
MemberDAO에 있는 update() 함수를 이용한다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %>
<jsp:useBean id="dto" class="day14.MemberDTO" />
<jsp:setProperty property="*" name="dto" />
<c:set var="row" value="${dao.update(dto) }" />
<c:if test="${row != 0 }">
<c:redirect url="/list.jsp" />
</c:if>
</body>
</html>
delete.jsp
: 회원삭제
현재는 회원 1명이 가지고 있는 정보가 많지 않기 때문에
단순히 userid 만 받아서 삭제하도록 구현했다
MemberDAO 에 delete() 함수의 결과값이 0이 아니라면 (== 데이터 삭제에 성공한다면)
list.jsp 로 리다이렉트
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="header.jsp" %>
<c:set var="row" value="${dao.delete(param.userid) }" />
<c:if test="${row != 0}">
<c:redirect url="/list.jsp" />
</c:if>
</body>
</html>
study_review
정보 수정을 위해서 selectOne()함수를 왜 만들어야하는지 이해가 가지 않았었다.
그래서 처음에는 value값 지정 없이
빈 값으로 update 에 관한 form 을 만들었는데 상당히 불편했다.
기존 정보를 사용자들도 헷갈릴 수도 있기 때문에
value 값을 지정해두는 것이 수정에 용이하다는 것을 직접 깨닫게 되었당 하하
'java' 카테고리의 다른 글
[ jsp ] 회원 + 게시판 + 댓글 (0) | 2023.12.16 |
---|---|
[ jsp ] 회원 + 게시판 (0) | 2023.12.14 |
[ jsp ] 회원기능 구현 (1) - 회원가입, 로그인, 로그아웃 (0) | 2023.12.12 |
[ jsp ] 로그인 세션 (0) | 2023.12.11 |
[ 상속 ] (0) | 2023.12.10 |