[Jsp] Jsp 페이징처리
2014. 4. 2. 11:11ㆍ프로그래밍/Jsp
<%
//페이징 파라미터 셋팅
//조건 추가시 여기에 추가해준다.
String pageParameter = "srchStatus=" + srchStatus;
pageParameter += "&page_per_record_cnt=" + page_per_record_cnt;
pageParameter += "&srchKeyword=" + srchKeyword;
pageParameter += "&orderbyType=" + orderbyType;
pageParameter += "&orderbyStatus=" + orderbyStatus;
pageParameter += "&srchSDate=" + srchSDate;
pageParameter += "&srchEDate=" + srchEDate;
pageParameter += "&ListdocKind=" + ListdocKind;
%>
<%--처음 --%>
<td nowrap>
<font class='page_no'>
<a href="List.jsp?pageno=1&<%=pageParameter %>">
처음
</a>
</font>
</td>
<%--처음 --%>
<%--이전 --%>
<td nowrap class ='no_dot'></ td>
<td nowrap>
<a href="List.jsp?pageno=<%=pageno-1 %>&<%= pageParameter %>">
이전
</a>
</td>
<%--이전 --%>
<%--페이지번호 --%>
<td nowrap>
<font class='no_choice'>
<%for( int i =page_sno;i<=page_eno;i++){%>
<a href="List.jsp?pageno=<%=i %>&<%= pageParameter %>">
<%if(pageno == i){ %>
[ <%=i %> ]
<%}else{ %>
<%=i %>
<%} %>
</a>
<%-- 여백 --%>
<%if(i<page_eno){ %>
<%} %>
<%} %>
</font>
</td>
<%--페이지번호 --%>
<td nowrap class ='no_dot'></ td>
<%--다음 --%>
<td nowrap>
<a href= "List.jsp?pageno=<%=pageno+1 %>&<%= pageParameter %>">
다음
</a>
</td>
<%--다음 --%>
<td nowrap class ='no_dot'></ td>
<%--마지막 --%>
<td nowrap>
<a href="List.jsp?pageno=<%=total_page %>&<%= pageParameter %>">
<font class='page_no'>
nbsp;마지막
</font>
</a>
</td>
<%--마지막 --%>
<td align='right' width='1%' nowrap>
현재 <font class='no_choice'> <%=pageno %> </font>
/ <%=total_page %>
총 <%=total_page %>
</td>
</tr>
===================================================================================================================================================================
<%!
public Integer toInt(String x){
int a = 0;
try{
a = Integer.parseInt(x);
} catch(Exception e){}
return a;
}
%>
<%
int pageno = toInt(request.getParameter("pageno"));
if(pageno<1){//현재 페이지
pageno = 1;
}
int total_record = 100; //총 레코드 수
int page_per_record_cnt = 10;
int group_per_page_cnt =10; //페이지 당 보여줄 번호 수[1],[2],[3],[4],[5]
// [6],[7],[8],[9],[10]
int record_end_no = pageno*page_per_record_cnt;
int record_start_no = record_end_no-(page_per_record_cnt-1);
if(record_end_no>total_record){
record_end_no = total_record;
}
int total_page = total_record / page_per_record_cnt + (total_record % page_per_record_cnt>0 ? 1 : 0);
if(pageno>total_page){
pageno = total_page;
}
// 현재 페이지(정수) / 한페이지 당 보여줄 페지 번호 수(정수) + (그룹 번호는 현재 페이지(정수) % 한페이지 당 보여줄 페지 번호 수(정수)>0 ? 1 : 0)
int group_no = pageno/group_per_page_cnt+( pageno%group_per_page_cnt>0 ? 1:0);
// 현재 그룹번호 = 현재페이지 / 페이지당 보여줄 번호수 (현재 페이지 % 페이지당 보여줄 번호 수 >0 ? 1:0)
// ex) 14 = 13(몫) = (66 / 5) 1 (1(나머지) =66 % 5)
int page_eno = group_no*group_per_page_cnt;
// 현재 그룹 끝 번호 = 현재 그룹번호 * 페이지당 보여줄 번호
// ex) 70 = 14 * 5
int page_sno = page_eno-(group_per_page_cnt-1);
// 현재 그룹 시작 번호 = 현재 그룹 끝 번호 - (페이지당 보여줄 번호 수 -1)
// ex) 66 = 70 - 4 (5 -1)
if(page_eno>total_page){
// 현재 그룹 끝 번호가 전체페이지 수 보다 클 경우
page_eno=total_page;
// 현재 그룹 끝 번호와 = 전체페이지 수를 같게
}
int prev_pageno = page_sno-group_per_page_cnt; // << *[이전]* [21],[22],[23]... [30] [다음] >>
// 이전 페이지 번호 = 현재 그룹 시작 번호 - 페이지당 보여줄 번호수
// ex) 46 = 51 - 5
int next_pageno = page_sno+group_per_page_cnt; // << [이전] [21],[22],[23]... [30] *[다음]* >>
// 다음 페이지 번호 = 현재 그룹 시작 번호 + 페이지당 보여줄 번호수
// ex) 56 = 51 - 5
if(prev_pageno<1){
// 이전 페이지 번호가 1보다 작을 경우
prev_pageno=1;
// 이전 페이지를 1로
}
if(next_pageno>total_page){
// 다음 페이지보다 전체페이지 수보가 클경우
next_pageno=total_page/group_per_page_cnt*group_per_page_cnt+1;
// next_pageno=total_page
// 다음 페이지 = 전체페이지수 / 페이지당 보여줄 번호수 * 페이지당 보여줄 번호수 + 1
// ex) = 76 / 5 * 5 + 1 ????????
}
// [1][2][3].[10]
// [11][12]
%>
[출처] yangyag 블로그
'프로그래밍 > Jsp' 카테고리의 다른 글
[JSP] 파일 다운로드 (0) | 2015.03.04 |
---|---|
[Jsp] Jsp 페이징처리 (0) | 2015.02.25 |
[Jsp] Jsp 엑셀 다운로드 (0) | 2014.03.31 |
[JSP] JSTL 오늘날짜 구하기 (0) | 2014.03.24 |
[Jsp] enctype="multipart/form-data" 에서 request.getParameter null 문제 (0) | 2014.03.07 |