today_is

[ jsp ] 회원기능 구현 (2) - 수정, 삭제 본문

java

[ jsp ] 회원기능 구현 (2) - 수정, 삭제

ye_rang 2023. 12. 12. 23:26

오늘의 목표

회원 수정, 삭제 기능을 구현해보자

 


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