관리자 모드에서 쇼핑몰에 가입한 회원들의 정보를 수정하는 기능을 구현해보자.
<jsp:useBean id="memberMgr" class="pack.member.MemberManager"></jsp:useBean>
<body>
** 관리자 - 전체 회원관리 ** <br/>
<div style="text-align: center;">
<%@include file="admin_top.jsp" %>
<br/>
<table style="width: 90%">
<tr style="background-color: silver;">
<th>아이디</th>
<th>회원명</th>
<th>이메일</th>
<th>전화</th>
<th>수정</th>
</tr>
<%
ArrayList <MemberDto> mlist = memberMgr.getMemberAll();
for(MemberDto m:mlist){
%>
<tr>
<td><%=m.getId() %></td>
<td><%=m.getName() %></td>
<td><%=m.getEmail() %></td>
<td><%=m.getPhone() %></td>
<td>
<a href="javascript:memUpdate('<%=m.getId() %>')">수정</a>
</td>
</tr>
<%
}
%>
</table>
<%@include file="admin_bottom.jsp" %>
</div>
<form action="memberupdate_admin.jsp" name="updateFrm" method="post">
<input type="hidden" name="id">
</form>
</body>
화면 구성은 table형식으로 구조를 잡고 있다.
ArrayList<MemberDto> mlist = memberMgr.getMemberAll()
현재 회원정보를 담고 있는 MemberDto객체의 리스트를 가져온다.
for(MemberDto m : mlist)
반복문 구문은 회원 정보가 있는 동안 계속해서 반복한다.
예를 들어, MemberDto객체에 담겨 있는 회원의 정보가 2명이면 2번 반복한다.
현재는 임의로 한명의 정보를 넣어놔서 한명의 정보만 출력 되는걸 확인할 수 있다.
<a href="javascript:memUpdate('<%=m.getId() %>')">수정</a>
테이블에 수정칸에 있는 수정에 링크를 만들고 클릭하면 회원정보를 수정하는 기능을 구현해보자.
자바 스크립트를 통해 memUpdat 함수가 실행이 되고 MemberDto객체의 mlist의 id(고유한 식별 정보) 값이 따라 들어온다.
function memUpdate(id){
//alert(id);
document.updateFrm.id.value = id;
document.updateFrm.submit();
}
해당 링크의 회원 id(회원정보) 값을 매개변수로 받아와 폼 필드에 설정한 후 폼을 제출하여 회원 정보 수정을 처리한다.
<jsp:useBean id="memberMgr" class="pack.member.MemberManager"></jsp:useBean>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
MemberDto dto = memberMgr.getMember(id);
%>
<form name="updateFormAdmin" method="post" action="memberupdateproc_admin.jsp">
<!-- 생략 -->
</form>
사용자로부터 회원정보의 id값을 받아온다.
그 받아온 id값을 사용하여 memberMgr 객체의 getMember 메서드를 호출하여 해당 아이디의 회원 정보를 가져온다.
폼 태그안에 작성된 데이터 값들은 memberupdateproc_admin.jsp
으로 넘어가게 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="mBean" class="pack.member.MemberBean"></jsp:useBean>
<jsp:setProperty property="*" name="mBean" />
<jsp:useBean id="memberMgr" class="pack.member.MemberManager"></jsp:useBean>
<%
boolean b = memberMgr.memberUpdate(mBean, mBean.getId());
if(b){
%>
<script>
alert("수정 성공");
location.href="membermanager.jsp";
</script>
<% }else{%>
<script>
alert("수정 실패\n관리자에게 문의 하세요");
history.back();
</script>
<%}%>
<jsp:setProperty property="*" name="mBean" />
은 수정된 데이터값들을 담기 위해 작성되었다.
메서드의 실행 결과에 따라 성공 또는 실패 메시지를 출력하고 페이지 이동을 처리한다.
memberMgr 객체의 memberUpdate 메서드를 호출하여 회원 정보를 업데이트(수정)하는데 사용한다.
b 변수가 true일 경우 "수정 성공" 메시지를 출력하고, false일 경우 "수정 실패" 메시지를 출력한다.
public boolean memberUpdate (MemberBean mbean, String id) {
boolean b = false;
try {
String sql = "update member set passwd=?,name=?,email=?,phone=?,zipcode=?,address=?,job=? where id=? ";
conn = ds.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mbean.getPasswd());
pstmt.setString(2, mbean.getName());
pstmt.setString(3, mbean.getEmail());
pstmt.setString(4, mbean.getPhone());
pstmt.setString(5, mbean.getZipcode());
pstmt.setString(6, mbean.getAddress());
pstmt.setString(7, mbean.getJob());
pstmt.setString(8, id);
// b가 트루이고 pstmt 값이 한개라도 있으면 업데이트가 된다.
if(pstmt.executeUpdate() > 0) b = true;
}
// ...생략
return b;
}
member 테이블에서 여러 컬럼의 값을 수정하는 업데이트(UPDATE) 쿼리문이다.
이 작업에서 반환된 b
값이 true
으로 반환이 되서 해당 DB 데이터 값이 수정이 된다.