Jsp
Jsp - paging
프리덕
2020. 7. 26. 21:41
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
<%@page import="board.BoardDTO"%>
<%@page import="board.BoardDAO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//5단계 while 다음행 이동 num,subject,name,date,readcount 열 가져오기
BoardDAO bdao=new BoardDAO();
//게시판 전체 글 개수 가져오기 SELECT count(*) FROM board
//int count = getBoardCount()
int count =bdao.getBoardCount();
//한 페이지 보여줄 글 개수 설정
int pageSize=10;
//현페이지 번호 가져오기
//http://localhost:8080/Study_JSP/boarder/list.jsp?pageNum=2
//pageNum 파라미터 가져오기
String pageNum=request.getParameter("pageNum");
//파라미터가 없으면 "1"로 설정
if(pageNum==null){
pageNum="1";
}
//pageNum->정수형
int currentPage=Integer.parseInt(pageNum);
//시작하는 행번호 구하기-알고리즘
//페이지번호 currentPage 한화면 보여줄 글개수 pageSize=>시작하는 행번호
// 1 10 1
// 2 10 11
// 3 10 21
// 4 10 31
int startRow= (currentPage-1)* pageSize+1 ;
//마지막 행번호 구하기-알고리즘
//페이지번호 currentPage 한화면보여줄 글개수 pageSize=> 마지막 행번호
// 1 10 10
// 2 10 20
// 3 10 30
// 4 10 40
int endRow=currentPage*pageSize;
//List boardList = getBoardList() 메서드 만들고 호출
//List<BoardBean> boardList=bdao.getBoardList();
// SELECT * FROM board order by num desc limit 시작행 -1 개수
%>
<h1>boarder/list.jsp [전체 글개수 : <%=count %>]</h1>
<input type="button" value="글쓰기" onclick="location.href='writeForm.jsp'">
<table border="1">
<tr><td>글번호</td><td>제목</td><td>작성자</td><td>날짜</td><td>조회수</td></tr>
<%
// List<BoardDTO> List=bdao.checkList();
List<BoardDTO> boardList= bdao.getBoardList(startRow, pageSize);
for(BoardDTO bb : boardList){
%>
<tr><td><%=bb.getNum() %></td>
<td><%
//이미지 width 계산 lev 1->10 2->20 3->30
int wid=0;
if(bb.getRe_lev()>0){
wid=bb.getRe_lev()*10;%>
<img src="level.gif" width="<%=wid%>" height="20">
<img src="re.gif">
<%}%>
<a href="content.jsp?num=<%=bb.getNum()%>"><%=bb.getSubject() %></a></td>
<td><%=bb.getName() %></td><td><%=bb.getTime()%></td><td><%=bb.getReadcount()%></td></tr>
<%
}
%>
</table>
<%
//전체 페이지 수 구하기 - 알고리즘
//전체 글개수 50 한화면에 보여줄 글개수 10->전체페이지수 5+0 ->5
//전체 글개수 57 한화면에 보여줄 글개수 10->전체페이지수 5+1 ->6
int pageCount=count/pageSize+(count%pageSize==0?0:1);
//한화면에 보여지는 페이지 개수 설정
int pageBlock=3;
//시작하는 페이지번호 구하기
// 현페이지번호currentPage 한화면 페이지갯수pageBlock ->시작하는 페이지 번호
// 1~10 10 -> 0*10+1-> 1
// 11~20 10 -> 1*10+1-> 11
// 21~30 10 -> 2*10+1->21
int startPage=(currentPage-1)/pageBlock*pageBlock+1;
//끝나는 페이지 번호 구하기
// 시작하는페이지번호 startPage 한화면 페이지갯수pageBlock ->끝나는 페이지 번호
// 1 10 -> ->10
// 11 10 -> -> 20
// 21 10 -> ->30
int endPage= startPage+pageBlock-1;
//끝나는 페이지 10 전체페이지 5-> 끝나는 페이지 5
if(endPage>pageCount){
endPage=pageCount;
}
//이전 페이지
if(startPage>pageBlock){
%><a href="list.jsp?pageNum=<%=startPage-pageBlock%>">[이전]</a><%
}
//http://localhost:8080/Study_JSP/boarder/list.jsp?pageNum=2
for(int i=startPage;i<=endPage;i++){
%><a href="list.jsp?pageNum=<%=i %>"><%=i %></a><%
}
//다음 페이지
if(endPage<pageCount){
%><a href="list.jsp?pageNum=<%=startPage+pageBlock%>">[다음]</a><%
}
%>
</body>
</html>
|
cs |
paging을 처음 사용해 보았다. 이것도 알고리즘을 사용하는 방식이라고 하셨다. 처음에 게시글 전체 수를 가져오고 거기서 페이지에 보여줄 게시글의 수를 정하고 그 기준을 넘어가면 다음 페이지를 생성하여 그쪽으로 보내는 방법이다. 그리고 맨 밑에 보면 이전 페이지를 생성하는 기준과 다음 페이지를 생성하는 기준을 정해서 화면에 표시하는 방법이다.
생소해서 그렇지 보다보면 어렵지는 않으니 처음 보고 어렵다고 놔두고 복사 붙여 넣기만 하지 말고 계속 보며 익숙해지도록 해야겠다.