스프링

==========================================================================

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) }">&laquo;</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) }">&raquo;</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>

 

 

==========================================================================

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

돈은 악이 아니며, 저주도 아니다. 돈은 사람을 축복하는 것이다. -탈무드

댓글 ( 4)

댓글 남기기

작성

스프링 목록    more