본문 바로가기

기능 학습/쇼핑몰 구현

[쇼핑몰 구현] 8. 페이징 처리 (회원 목록)

목록


목차

구성

회원 목록 페이징 처리 창

 

 

#1 . 총 페이지 수 설정

    //--전체 회원 수
    public int getTotalUser() throws SQLException{
		try {
			con=DBUtil.getCon();
			String sql="select count(idx) from member ";
			
			ps=con.prepareStatement(sql);
			rs=ps.executeQuery();
			
			boolean b=rs.next();//있으면 true반환
			int cnt=0;
			if(b) {
				cnt=rs.getInt(1);//index1번 지정해서 꺼내옴
			}
			return cnt;
		} finally {
			close();
		}
		
	}

회원 정보 테이블에서 idx(primary key) 값을 이용해 전체 회원 수 구하기

 

	int totalCount = userDao.getTotalUser();

전체 회원 수 호출

 

	int pageSize = 10;

한 페이지당 보여줄 목록 개수를 10개로 지정 

 

	int pageCount = 0;

총 페이지 수를 담아줄 변수 설정

 

	pageCount = (totalCount-1)/pageSize+1;

총 페이지 수 = (전체 회원 수 -1) / 한 페이지당 보여줄 목록 개수 +1

 

ex)

전체 회원 수 = 29

29 - 1 = 28

 

한 페이지당 보여줄 목록 개수 = 10

28 / 10 = 2 (int 값은 소수점을 반환하지 않고 나눈 값이 1보다 작을 경우 0을 반환)

2 + 1 = 3

 

총 페이지 수 = 3 

 

 

	<b>총 회원수</b>:<span class="text-primary"><%=totalCount %> 명</span>

전체 회원 수(totalCount) 출력

 

 

for(int i=1; i<=pageCount; i++){

	[<a href="list.jsp?cpage=<%=i%>"> <%=i%> </a>]

}

총 페이지 수(pageCount) 출력

 

해당 페이지에 링크를 걸고 보여줄 페이지 번호 값(cpage) 전달

 

 

#2 . 해당하는 페이지의 회원 정보 출력

	int end = cpage * pageSize;

해당 페이지에 보여줄 회원의 마지막 값 설정

 

(마지막 값 = 클릭한 페이지 * 10)

 

ex)

2페이지 클릭 시

2 * 10 = 20

 

20번째 까지의 회원

 

	int start = end - pageSize +1;

해당 페이지에 보여줄 회원의 첫 번째 값 설정

 

(첫 번째 값 = 20 - 10 + 1)

 

11번째 부터의 회원

 

 

	//--보여줄 회원의 정보 구하기
	public List<UserVO> listUser(int start, int end) throws SQLException{
		try {
			con=DBUtil.getCon();
			String sql="select * from("
				+ " select rownum rn, a.* from(" //조회한 회원의 순번, 모든 회원 정보
				+ " (select * from member order by idx desc) a)" //모든 회원 정보
				+ " )"
				+ " where rn between ? and ?"; //start값 부터 end 값의 정보
			
			ps= con.prepareStatement(sql);
			ps.setInt(1, start);
			ps.setInt(2, end);
			
			
			rs=ps.executeQuery();
			List<UserVO> arr=makeList(rs);
			return arr;
			
		}finally {
			close();
		}
		
	}

1. 모든 회원 정보 구하기

2. 모든 회원 정보순번과 정보 구하기

3. start 값 부터 end 값인 순번의 정보 구하기

 

 

	List<UserVO> userList = userDao.listUser(start, end);

위에서 구한 start, end 값을 이용해 페이지에 출력해줄 회원 정보 가져오기

 

 

   for(UserVO user: userList){
      String str=(user.getMstate()==0)? "일반회원":(user.getMstate()==1)? "정지회원": "탈퇴회원";
   %>
   <tr>
      <th><%=user.getIdx() %></th>
      <th><%=user.getName() %></th>
      <th><%=user.getUserid() %></th>
      <th><%=user.getAllHp() %></th>
      <th class="txt<%=user.getMstate() %>"><%=str %></th>
      <td><a href="edit.jsp?idx=<%=user.getIdx()%>">수정</a>
	  <a href="delete.jsp?idx=<%=user.getIdx()%>">삭제</a></td>
   </tr>
   <%

해당 페이지의 회원 정보 출력