JSP 페이징 처리 알고리즘
Bean 코드
BoardDBBean.java의 코드
1 | package ch12.board; |
list.jsp 페이지1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59//선언부
<%@ page contentType = "text/html; charset=euc-kr" %><%@ page import = "ch12.board.BoardDBBean" %>
<%@ page import = "ch12.board.BoardDataBean" %>
<%@ page import = "java.util.List" %>
<%@ page import = "java.text.SimpleDateFormat" %>
<%@ include file="/view/color.jsp"%>
<%!
int pageSize = 10;//한페이지에 표시할 글의 수
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //날짜데이터 표시형식지정
%>
<%
String pageNum = request.getParameter("pageNum");//화면에 표시할 페이지번호
int count = 0;//전체글의 수
int number=0;//현재페이지에 표시할 레코드수
int currentPage = Integer.parseInt(pageNum);//pageNum변수값을 숫자로 파싱
if (pageNum == null) {//페이지번호가 없으면
pageNum = "1";//1페이지의 내용이 화면에 표시
}
List articleList = null;//글목록을 저장
BoardDBBean dbPro = BoardDBBean.getInstance();
count = dbPro.getArticleCount();//전체글수 얻어냄
if(count == (currentPage-1)*pageSize){
currentPage -=1;
String listPage= "list.jsp?pageNum="+currentPage;
response.sendRedirect(listPage);
}
int startRow = (currentPage - 1) * pageSize + 1;//현재 페이지에서의 시작글번호
int endRow = currentPage * pageSize;//현재 페이지에서의 마지막글번호
if (count>0) {//테이블에 저장된 글이 있으면
articleList = dbPro.getArticles(startRow, pageSize);//테이블에 글목록을 가져옴
}
if(articleList.isEmpty()){
out.println("a");
currentPage-=1;
response.sendRedirect("list.jsp?pageNum=currentPage");
}
number=count-(currentPage-1)*pageSize;
%>
//페이징 처리부
<%
if (count>0) { //count가 0보다 크다면 실행 글이 하나라도 저장되 있다면
int pageCount = count / pageSize + ( count % pageSize == 0 ? 0 : 1);
int startPage =1;
if(currentPage % 10 != 0){
startPage = (int)(currentPage/10)*10 + 1;
}else{
startPage = ((int)(currentPage/10)-1)*10 + 1;
}
int pageBlock=10;
int endPage = startPage + pageBlock-1;
if (endPage>pageCount) endPage = pageCount;
if (startPage>10) { %><a href="list.jsp?pageNum=<%= startPage - 10 %>">[이전]</a><% }
for (int i = startPage ; i<= endPage ; i++) { %><a href="list.jsp?pageNum=<%= i %>">[<%= i %>]</a><%
}
if (endPage<pageCount) { %><a href="list.jsp?pageNum=<%= startPage + 10 %>">[다음]</a><%
}
}
%>