[JSP] 회원 기능 (2)

2024. 10. 7. 18:04JSP

저번 글에 이어서 오늘은 수정, 삭제 기능을 구현해 볼 것이다.

 


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