Jsp - DAO,Paging 을 활용한 게시판 글목록 불러오기

2020. 7. 30. 21:24Jsp

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
 
<%@page import="board.BoardDTO"%>
<%@page import="java.util.List"%>
<%@page import="board.BoardDAO"%>
<%@ 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=3;
//현페이지 번호 가져오기
//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><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

 

DB에 연결하여 저장된 게시글들을 불러와서 화면에 뿌려주는 것을 배워보았다.

DAO를 활용하고 Paging을 사용하여 원하는 개수만큼의 게시글을 표현해 보았다. 

게시글을 눌렀을 경우 게시글의 내용으로 넘어가면서 DB의 기본키인 Num값을 가지고 넘어가게 설정을 해주었는데

다음 화면으로 넘어가면서 Num을 가지고 가서 DB에서 Num을 기준으로 정보를 가져오게 하기 위해서 설정을 해두었다. 이렇게 해줘야 DB에서 정확한 정보를 가져올 수 있기 때문에 페이지를 넘어갈 때마다 Num을 가져가게 해 두었다. 어려운 개념은 아니지만 빼먹고 페이지를 넘어가게 되면 정확히 선택한 DB를 불러오기 힘들어 지므로 잊어먹지 말고 설정해 주어야겠다.

'Jsp' 카테고리의 다른 글

Jsp - Delete 게시글  (0) 2020.07.30
Jsp - 게시글 쓰기  (0) 2020.07.30
Jsp - file upload  (0) 2020.07.26
Jsp - paging  (0) 2020.07.26
Jsp - jdbc를 활용한 회원정보활용  (0) 2020.06.27