JSP 쇼핑몰 관리자 모드(회원수정)

유광진·2023년 8월 28일
0

📌 1. 관리자 모드(회원수정)

관리자 모드에서 쇼핑몰에 가입한 회원들의 정보를 수정하는 기능을 구현해보자.

📖 membermanager.jsp

<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(회원정보) 값을 매개변수로 받아와 폼 필드에 설정한 후 폼을 제출하여 회원 정보 수정을 처리한다.

📖 memberupdate_admin.jsp

<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 으로 넘어가게 된다.

📖 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일 경우 "수정 실패" 메시지를 출력한다.

📖 MemberManager.java

    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 데이터 값이 수정이 된다.

profile
백엔드 개발자 유광진 입니다.

0개의 댓글