본문 바로가기

기능 학습/쇼핑몰 구현

[쇼핑몰 구현] 4. 회원정보 수정 삭제

목록


목차

 

구성

회원 수정 페이지

 

#1 . 회원 번호 전달

      <td><a href="edit.jsp?idx=<%=user.getIdx()%>">수정</a>
	  <a href="delete.jsp?idx=<%=user.getIdx()%>">삭제</a></td>

선택한 회원의 번호값(primary key)을 회원 수정 페이지로 전달

 

 

#2 . 회원 번호로 정보 불러오기

	/**회원번호(idx pk)로 회원정보 가져오기*/
	public UserVO selectUser(String idx) throws SQLException{
		try {
			con=DBUtil.getCon();
			String sql="select * from member where idx=?";
			ps=con.prepareStatement(sql);
			ps.setString(1, idx);
			rs=ps.executeQuery();
			
			List<UserVO> arr = makeList(rs);
			if(arr!=null && arr.size()==1) {
				UserVO user = arr.get(0);
				return user;
			}
			return null;
			
		}finally {
			close();
		}
		
	}

전달받은 회원의 번호 값으로 회원 정보 조회

 

	//--회원 정보 리스트
	private List<UserVO> makeList(ResultSet rs) throws SQLException{
		List<UserVO> arr = new ArrayList<>();
		while(rs.next()) {
			int idx = rs.getInt("idx");
			String name = rs.getString("name");
			String userid=rs.getString("userid");
			String pwd=rs.getString("pwd");
			String hp1=rs.getString("hp1");
			String hp2=rs.getString("hp2");
			String hp3=rs.getString("hp3");
			String zipcode=rs.getString("zipcode");
			String addr1=rs.getString("addr1");
			String addr2=rs.getString("addr2");
			java.sql.Date indate=rs.getDate("indate");
			int mileage=rs.getInt("mileage");
			int mstate=rs.getInt("mstate");
			
			UserVO user = new UserVO(idx,name,userid,pwd,hp1,hp2,hp3,
					zipcode,addr1,addr2,indate,mileage,mstate);
			arr.add(user);
		}//while----
		return arr;
	}

조회한 회원 정보의 리스트를 생성

 

 

#3 . 회원 정보 출력 및 입력받기

회원 수정 페이지

회원가입 페이지와 동일하게 생성하지만 비밀번호를 제외한 정보를 출력하고 수정하고자 하는 정보를 입력받음

 

<input type="radio" name="mstate" value="0" placeholder="Name" <%=(user.getMstate()==0)?"checked":"" %>>활동회원
<input type="radio" name="mstate" value="1" placeholder="Name" <%=(user.getMstate()==1)?"checked":"" %>>정지회원
<input type="radio" name="mstate" value="-1" placeholder="Name" <%=(user.getMstate()==-1)?"checked":"" %>>탈퇴회원

해당 회원의 회원 상태를 보여주는 라디오 버튼을 추가하고 수정 가능하도록 함

 

 

#4 . 수정된 회원 정보 출력

	//--회원 정보 수정
	public int updateUser(UserVO user) throws SQLException{
		try {
			con = DBUtil.getCon();
			 
			//StringBuffer/StringBuilder 클래스를 이용해서 문자열을 편집           
			StringBuilder buf
			= new StringBuilder("update member set name=?, userid=?, pwd=?, hp1=?, hp2=?, hp3=?");
			buf.append(" ,zipcode=?, addr1=?, addr2=?, mstate=? where idx=?");

			//toString()메소드를 이용해 String으로 최종적으로 만들어 사용
			String sql = buf.toString();

			ps=con.prepareStatement(sql);
			ps.setString(1, user.getName());
			ps.setString(2, user.getUserid());
			ps.setString(3, user.getPwd());
			ps.setString(4, user.getHp1());
			ps.setString(5, user.getHp2());
			ps.setString(6, user.getHp3());
			ps.setString(7, user.getZipcode());
			ps.setString(8, user.getAddr1());
			ps.setString(9, user.getAddr2());
			ps.setInt(10, user.getMstate());
			ps.setInt(11, user.getIdx());
			
			int n =ps.executeUpdate();
			return n;
			
		}finally {
			close();
		}
	}

String은 원본을 변경하지 못하기 때문에 문자열을 추가, 삭제, 변경하기 위해 StringBuffer/StringBuilder 클래스를 이용해 문자열을 편집한 뒤 toString()메소드를 통해 String으로 만들어 최종 사용

 

수정 성공 시 1 실패 시 -1 값을 반환

 

<%
	int n = userDao.updateUser(user);

	String msg=(n>0)? "수정 처리 완료":"수정 실패";
	String loc=(n>0)? "edit.jsp?idx="+user.getIdx():"javascript:history.back()";
%>

<script>
	alert('<%=msg%>');
	location.href='<%=loc%>';
</script>

 

수정 성공 시 "수정 처리 완료" 메시지 출력 후 해당 회원의 정보를 회원 목록 페이지로 보내주어 수정된 값 출력

 

 

#5 . 회원 삭제

	/--회원정보 삭제
	public int deleteUser(String idx) throws SQLException{
		try {
			con=DBUtil.getCon();
			
			String sql = "delete from member where idx=?";
			
			ps = con.prepareStatement(sql);
			ps.setString(1, idx);
			
			int n = ps.executeUpdate();
			return n;
		}finally {
			close();
		}
		
	}

전달받은 회원의 번호 값으로 회원 테이블에서 정보 삭제

 

삭제 성공 시 1 실패 시 -1 값을 반환

 

int n = userDao.deleteUser(idx.trim());

String msg=(n>0)? "삭제 완료":"삭제 실패";
String loc= "list.jsp";

%>
<script>
	alert('<%=msg%>');
	location.href='<%=loc%>';
</script>

삭제 성공 시 "삭제 완료" 메시지 출력 후 해당 회원의 정보를 회원 목록 페이지로 보내주어 삭제된 값을 제외하고 출력