[JSP] 회원 기능 (2)
2024. 10. 7. 18:04ㆍJSP
저번 글에 이어서 오늘은 수정, 삭제 기능을 구현해 볼 것이다.
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
회원삭제 기능
현재는 회원 한 명이 가지고 있는 정보가 많지 않기 때문에
단순히 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>
처음에는 selectOne() 함수가 왜 필요한지 이해가 잘 안됐었다.
그래서 나는 value값 지정 없이 빈 값으로 update form을 만들었는데 너무 불편했다.
기존 정보를 사용자들도 헷갈릴 수 있기 때문에 value값을 지정해두는 것이
수정에 용이하다는 것을 깨달을 수 있었다.
'JSP' 카테고리의 다른 글
[JSP] 게시판 (2) (1) | 2024.10.07 |
---|---|
[JSP] 게시판 (1) (0) | 2024.10.07 |
[JSP] 회원 기능 (1) (0) | 2024.10.05 |
[JSP] Login Session (1) | 2024.10.05 |
[JSP] JSP 실전 (1) | 2024.10.05 |