개발/java,spring

java, jsp 페이징처리

Mr.mandu. 2017. 3. 16. 19:40

아주 예~~전에 교육받을때 페이징처리를 처음부터 생성하며 해보았지만....

할때마다 가끔 생각이 뒤죽박죽이 된다.

이유는 페이징에 사용되는 변수의 쓰임에대해 제대로 개념을 잡지 못해서 인것 같다.


그래서 이번에 정리를 해두려고 합니다.

먼저 사용하는 변수!


controller 에서 사용하는 변수 입니다.

pageIndex

 - 현재 페이지 번호 입니다.

   ex) [1] [2] [3]      <----실제 페이지 번호


pageSize

 - 게시물에 나타나는 목록 개수 입니다.


count

 - 총게시물의 개수 입니다.


startRow

 - 게시물의 첫번째 데이터 입니다.


endRow

 - 게시물의 마지먹 번째 데이터 입니다.


pageGroupSize

 - 한페이지에 페이지 번호를 몇개 뿌릴것인가 입니다.

    ex) pageGroupSize=3 이면,    [1] [2] [3]    <---이렇게 3개가 출력됩니다.

 

pageGroupCount

 - 페이지 그룹이 몇개인가를 나타냅니다.

   ex) 총데이터:40, 페이지사이즈:10, 페이지그룹사이즈 :3, 

       40 / (10*3) + (40%(10*3)==0?0:1) =2                   40 - 30 하면 10개가 남아버려서 +1을 해주는 것입니다


nowPageGroup

 - pageGroupCount의 순번을 의미합니다.




int pageSize = vo.getPageSize();// 한페이지에 나오는 게시물 개수
int pageIndex = vo.getPageIndex(); //현재 선택한 페이지 number
int pageGroupSize = vo.getPageGroupSize(); // 페이지 번호가 몇개 나오느냐 개수
int startRow = (pageIndex - 1) * pageSize;// 한 페이지의 시작글 번호
int endRow = pageIndex * pageSize;// 한 페이지의 마지막 글번호
int count = boardList.size(); //게시물 총 개수
int pageGroupCount = count / (pageSize * pageGroupSize) + (count % (pageSize * pageGroupSize) == 0 ? 0 : 1);//총 그룹개수
int nowPageGroup = (int) Math.ceil((double) pageIndex / pageGroupSize); //현재 그룹페이지 번호


jsp에서 사용하는 변수입니다.

pageCount

 - 총 페이지 개수 입니다.


startPage

 - 시작 페이지 번호입니다.


endPage

 - 끝페이지 번호 입니다.



List를 뿌리는것은 그냥 뿌리시면 되고

이 부분은 페이징 소스 입니다.


<!-- Paging : S -->
	<c:if test="${count > 0}">
	<!--페이지 개수  -->
		<c:set var="pageCount" value="${count / pageSize + ( count % pageSize == 0 ? 0 : 1)}" />
		<c:set var="startPage" value="${pageGroupSize*(nowPageGroup-1)+1}" />
		<c:set var="endPage" value="${startPage + pageGroupSize-1}" />
		<c:if test="${endPage > pageCount}">
			<c:set var="endPage" value="${pageCount}" />
		</c:if>

		<c:if test="${nowPageGroup > 1}">
			<a href="<c:url value = "${CTX_PATH}boardList.do?pageIndex=${(nowPageGroup-2)*pageGroupSize+1 }&pageSize=${pageSize}"/>">[이전]</a>
		</c:if>

		<c:forEach var="i" begin="${startPage}" end="${endPage}">
			<a href="<c:url value="boardList.do?pageIndex=${i}&pageSize=${pageSize}&bbs_sno=${bbs_sno}"/>">
			  [<font color="#000000" /> 
			  <c:if test="${pageIndex == i}"><font color="#bbbbbb" /></c:if> ${i} </font>]
			</a>
		</c:forEach>

		<c:if test="${nowPageGroup < pageGroupCount}">
			<a href="<c:url value = "boardList.do?pageIndex=${nowPageGroup*pageGroupSize+1}&pageSize=${pageSize}"/>">[다음]</a>
		</c:if>
	</c:if>
	<!-- Pageing : E -->

<c:set>태그가 아닌 ${ }안에 있는 변수들은 Controller에서 받아온 값 입니다.