Jsp - paging

2020. 7. 26. 21:41Jsp

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을 처음 사용해 보았다. 이것도 알고리즘을 사용하는 방식이라고 하셨다. 처음에 게시글 전체 수를 가져오고 거기서 페이지에 보여줄 게시글의 수를 정하고 그 기준을 넘어가면 다음 페이지를 생성하여 그쪽으로 보내는 방법이다. 그리고 맨 밑에 보면 이전 페이지를 생성하는 기준과 다음 페이지를 생성하는 기준을 정해서 화면에 표시하는 방법이다.

생소해서 그렇지 보다보면 어렵지는 않으니 처음 보고 어렵다고 놔두고 복사 붙여 넣기만 하지 말고 계속 보며 익숙해지도록 해야겠다. 

'Jsp' 카테고리의 다른 글

Jsp - DAO,Paging 을 활용한 게시판 글목록 불러오기  (1) 2020.07.30
Jsp - file upload  (0) 2020.07.26
Jsp - jdbc를 활용한 회원정보활용  (0) 2020.06.27
Jsp - session!!!  (0) 2020.06.27
Jsp - cookie  (0) 2020.06.27