PageMaker.java > SPRING1

본문 바로가기
사이트 내 전체검색

SPRING1

PageMaker.java

페이지 정보

profile_image
작성자 관리자
댓글 0건 조회 59회 작성일 24-07-30 14:56

본문

package com.pkt.model;


import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;


import org.springframework.web.util.UriComponents;

import org.springframework.web.util.UriComponentsBuilder;


import lombok.Data;


@Data

public class PageMaker {


private int totalCount; // 총 게시물 수

private int startPage; // 시작 페이지

private int endPage; // 끝 페이지

private boolean prev; // 이전 링크

private boolean next; // 다음 링크

private int displayPageNum = 5; //블럭 갯수

private Criteria cri; // limit 메소드 이용


private void calcData() {

endPage = (int) (Math.ceil(cri.getPage() / (double) displayPageNum) * displayPageNum);

//endPage를 구하고 startPage를 구하는게 여기서는 더 편리하다.

//endPage = 현재 페이지 번호 / 블럭 개수 * 블럭 개수

//현재 페이지가 3 : Math.ceil(3/10) * 10 = 10

//현재 페이지가 1 : Math.ceil(1/10) * 10 = 10

//현재 페이지가 20 : Math.ceil(20/10) * 10 = 20

//현재 페이지가 21 : Math.ceil(21/10) * 10 = 30


startPage = (endPage - displayPageNum) + 1;

//현재 페이지가 21 : startPage = (30 - 10) + 1 = 21 


// 마지막 블럭일 경우 계산 처리

int tempEndPage = (int) (Math.ceil(totalCount / (double) cri.getPerPageNum()));

if (endPage > tempEndPage) {

endPage = tempEndPage;

}


prev = startPage == 1 ? false : true; //시작 페이지가 1이 아니라면 true

next = endPage * cri.getPerPageNum() >= totalCount ? false : true;

//endPage = 10 , perPageNum = 10 , totalCount = 101 이라면 next = true 되어야 한다. 

}


public void setTotalCount(int totalCount) {

this.totalCount = totalCount;


//위 메소드 호출

calcData();

}


// get방식 - url 주소 변수 값 - 처리 용이하게..

public String makeQuery(int page) {

UriComponents uriComponents = UriComponentsBuilder.newInstance()

.queryParam("page", page)

.queryParam("perPageNum", cri.getPerPageNum())

.build();


return uriComponents.toUriString();

}


// search 추가

public String makeSearch(int page) {

UriComponents uriComponents = UriComponentsBuilder.newInstance()

.queryParam("page", page)

.queryParam("perPageNum", cri.getPerPageNum())

.queryParam("searchType", cri.getSearchType())

.queryParam("keyword", cri.getKeyword())

//.queryParam("keyword", encoding(cri.getKeyword()))

.build();


return uriComponents.toUriString();

}


// get 방식으로 값을 넘겼을때 한글이 깨질 경우 처리 추가

private String encoding(String keyword) {

if (keyword == null || keyword.trim().length() == 0) {

return "";

}


try {

return URLEncoder.encode(keyword, "UTF-8");

} catch (UnsupportedEncodingException e) {

return "";

}

}

}

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

공지사항
자유게시판
질문답변
1:1문의

 

별명 : 터푸가위
주소 : 부산시 동래구 명장로20번길 90
대표 : 박규태
메일 : dancepkt@******.com

접속자집계

오늘
259
어제
160
최대
10,760
전체
273,868
Copyright © dancePKT . All rights reserved.