==========================================================================
public class Criteria {
?? ?private int page;
?? ?private int perPageNum;
?? ?
?? ?public Criteria(){
?? ??? ?this.page=1;
?? ??? ?this.perPageNum=10;
?? ??? ?
?? ?}
?? ?
?? ?
?? ?public void setPage(int page){
?? ??? ?if(page <=0){
?? ??? ??? ?this.page=1;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?this.page =page;
?? ?}
?? ?
?? ?
? ??
?? ?public void setPerPageNum(int perPageNum) {
?? ??? ?
?? ??? ?if(perPageNum <=0 || perPageNum >100){
?? ??? ??? ?this.perPageNum =10;
?? ??? ??? ?return;
?? ??? ?}
?? ??? ?this.perPageNum = perPageNum;
?? ?}
?? ?
?? ?
?? ?
?? ?public int getPage() {
?? ??? ?return page;
?? ?}
?? ?
?? ?
?? ?//method for MyBatis SQL Mapper--
?? ?
?? ?public int getPageStart(){
?? ??? ?
?? ??? ?return (this.page-1) * perPageNum;
?? ?}
?? ?
?? ?
?? ?// method for MyBatis SQL Mapper
?? ?public int getPerPageNum(){
?? ??? ?return this.perPageNum;
?? ?}
?? ?@Override
?? ?public String toString() {
?? ??? ?return "Criteria [page=" + page + ", perPageNum=" + perPageNum + "]";
?? ?}??
?? ?
}
==========================================================================
@Data
public class PageMaker {
?? ?private int totalCount;
?? ?private int startPage;
?? ?private int endPage;
?? ?private boolean prev;
?? ?private boolean next;
?? ?
?? ?private int tempEndPage; //마지막 페이지
?? ?
?? ?
?? ?private int displayPageNum =10;
?? ?
?? ?private Criteria cri;
?? ?
?? ?public void setTotalCount(int totalCount) {
?? ??? ?this.totalCount = totalCount;
?? ??? ?
?? ??? ?calcData();
?? ?}
?? ?
?? ?
?? ?private void calcData(){
?? ??? ?
?? ??? ??? ?endPage =(int)(Math.ceil(cri.getPage()/(double)displayPageNum)*displayPageNum);
?? ??? ??? ?
?? ??? ??? ?startPage =(endPage - displayPageNum) +1;
?? ??? ??? ?
?? ??? ??? ?tempEndPage =(int)(Math.ceil(totalCount/(double)cri.getPerPageNum()));
?? ??? ?
?? ??? ??? ?if(endPage >tempEndPage){
?? ??? ??? ??? ?endPage=tempEndPage;
?? ??? ??? ?}
?? ??? ??? ?
?? ??? ??? ?prev =startPage ==1 ? false :true;
?? ??? ??? ?next =endPage *cri.getPerPageNum() >=totalCount ? false :true;
?? ?}
?? ?
?? ?
?? ?public String makeQuery(int page){
?? ??? ?
?? ??? ?UriComponents uriComponents =
?? ??? ??? ??? ?UriComponentsBuilder.newInstance()
?? ??? ??? ??? ?.queryParam("page", page)
?? ??? ??? ??? ?.queryParam("perPageNum", cri.getPerPageNum())
?? ??? ??? ??? ?.build();
?? ??? ?return uriComponents.toUriString();
?? ?}
?? ?
?? ?
}
==========================================================================
?//MYSQL
?? ?@RequestMapping(value="/listPage", method=RequestMethod.GET)
?? ?public void listPage(Criteria cri, Model model) throws Exception{
?? ??? ?
?? ??? ?model.addAttribute("list", boardService.listCriteria(cri));
?? ??? ?PageMaker pageMaker =new PageMaker();
?? ??? ?pageMaker.setCri(cri);
?? ??? ?
?? ??? ?//페이지 총 개수 가져오기?? ??? ??? ?
?? ??? ?int count =boardService.pageTotalCount();
?? ??? ?
?? ??? ?pageMaker.setTotalCount(count);
?? ??? ?
?? ??? ?model.addAttribute("pageMaker", pageMaker);
?? ?}
?? ?
==========================================================================
<div class="pagination">
<ul>
<c:if test="${ param.page > 1}">
<li><a href="/board/listPage${ pageMaker.makeQuery(1) }">[시작]</a></li>
</c:if>
<c:if test="${ pageMaker.prev }">
<li><a href="/board/listPage${ pageMaker.makeQuery(pageMaker.startPage - 1) }">«</a></li>
</c:if>
<c:forEach begin="${ pageMaker.startPage }" end="${ pageMaker.endPage }" step="1" var="pageNum">
<c:choose>
<c:when test="${ pageMaker.cri.page == pageNum }">
<li class="active">
<a href="/board/listPage${pageMaker.makeQuery(pageNum) }" style="background:#E85356; color:white; ">${pageNum }</a>
</li>
</c:when>
<c:otherwise>
<li>
<a href="/board/listPage${pageMaker.makeQuery(pageNum) }">${pageNum }</a>
</li>
</c:otherwise>
</c:choose>
</c:forEach>
<c:if test="${pageMaker.next && pageMaker.endPage > 0 }" >
<li><a href="/board/listPage${pageMaker.makeQuery(pageMaker.endPage + 1) }">»</a></li>
</c:if>
<!-- 마지막 페이지 -->
<c:if test="${ param.page < pageMaker.tempEndPage}">
<li><a href="/board/listPage${ pageMaker.makeQuery(pageMaker.tempEndPage) }">[끝]</a></li>
</c:if>
</ul>
</div>
==========================================================================
댓글 ( 4)
댓글 남기기