반응형

# 자바 게시판 페이징 처리

## 단순히 페이징만 할 경우(페이지 하단에 나오는 페이지 번호 출력 제한없이)

페이지 당 게시물 10개 출력 / 100개 넘는 게시물이 존재하여 페이징 버튼이 11개 출력

### .java 파일

  • itemsInAPage : 한 페이지에 출력 할 게시물 수
  • totalCount : 전체 게시물 수
  • totalPage : 출력 할 전체 페이지 수
int page = 1; // 시작 페이지

int itemsInAPage = 10;
int totalCount = db 등에서 전체 게시물 카운트해서 값 가져오기.
int totalPage = (int) Math.ceil(totalCount / (double) itemsInAPage);
  • 위 상태에서 jsp에서 값을 사용하기 위해 setAttribute 진행 (req는 request)
req.setAttribute("totalCount", totalCount);
req.setAttribute("totalPage", totalPage);
req.setAttribute("page", page);

### .jsp 파일

  • java 파일과 연결된 jsp 파일
  • 페이지에 접근하는 세부 코드(링크?)는 짜여진 코드에 따라 다르므로 참고만 하기
<table>
	<tr>
    	// 이전 페이지 버튼
    	if ( page != 1 ) {
        	int k = page;
			<td><a href="?page=<%=k-1 %>">이전</a></td>
		}
        
        for ( int i = 1; i <= totalPage; i++ ) {
        	<td><a href="?page=<%=i %>"><%=i %></a></td>
        }
    
    	// 다음 페이지 버튼
    	if ( page != totalPage ) {
        	int k = page;
			<td><a href="?page=<%=k+1 %>">다음</a></td>
		}
    </tr>
</table>

 

## 기존 페이징 코드에 + 페이징 버튼 제한

위와 마찬가지로 페이지 당 게시물 10개 출력 / 100개 넘는 게시물이 존재하여 페이징 버튼이 11개 출력되지만, 페이징 버튼 출력을 5개로 제한하여 한번에 5개씩 출력

### .java 파일

  • pageCount : 한번에 출력될 페이징 버튼 수
    startPage : 페이징 버튼 시작 값
    endPage : 페이징 버튼 종료 값
int page = 1; // 시작 페이지

int itemsInAPage = 10;
int totalCount = db 등에서 전체 게시물 카운트해서 값 가져오기.
int totalPage = (int) Math.ceil(totalCount / (double) itemsInAPage);


int pageCount = 5;
int startPage = ((page - 1) / pageCount) * pageCount + 1;
int endPage = startPage + pageCount - 1;

// 추가로 조건 설정
if( totalPage < page) {
page = totalPage;
}

if ( endPage > totalPage) {
endPage = totalPage;
}
  • 위 상태에서 jsp에서 값을 사용하기 위해 setAttribute 진행 (req는 request)
req.setAttribute("totalCount", totalCount);
req.setAttribute("totalPage", totalPage);
req.setAttribute("page", page);

req.setAttribute("pageCount", pageCount);
req.setAttribute("startPage", startPage);
req.setAttribute("endPage", endPage);

### .jsp 파일

  • java 파일과 연결된 jsp 파일
  • 페이지에 접근하는 세부 코드(링크?)는 짜여진 코드에 따라 다르므로 참고만 하기
<table>
	<tr>
    	// 이전 페이지 버튼
    	if ( page != 1 ) {
        	int k = page;
			<td><a href="?page=<%=k-1 %>">이전</a></td>
		}
        
        for ( int i = starPage; i <= endPage; i++ ) {
        	<td><a href="?page=<%=i %>"><%=i %></a></td>
        }
    
    	// 다음 페이지 버튼
    	if ( page != totalPage ) {
        	int k = page;
			<td><a href="?page=<%=k+1 %>">다음</a></td>
		}
    </tr>
</table>

 

반응형

+ Recent posts