class Paging
public class Paging {
//화면에 보여질 게시글의 개수를 지정
private int pageSize=10;
private int count =0; //전체 글의 갯수를 저장하는 변수
private int number =0; //페이지 넘버링 변수
private String pageNum;
private int startRow;
private int endRow;
private int currentPage;
private int pageCount;
private int startPage;
private int pageBlock;
private int endPage;
private int prev; //이전
private int next; //다음
public Paging(String pageNum) {
//만약 처음 boardList.jsp를 클릭하거나 수정 삭제 등 다른 게시글에서 이 페이지로 넘어오면 pageNum값이 없기에 null 처리를 해줌
if(pageNum==null){
pageNum="1";
}
this.pageNum=pageNum;
//전체 보고자 하는 페이지숫자를 저장
currentPage =Integer.parseInt(pageNum);
}
public void setTotalCount(int count){
this.count=count;
//현재 페이지에 보여줄 시작 번호를 설정 = 데이터 베이스에서 불러올 시작번호
startRow =(currentPage-1) *pageSize+1;
endRow =currentPage * pageSize;
//테이블에 표시할 번호를 지정
this.number =count - (currentPage -1 ) * pageSize;
//페이지 계산
pageCaculator();
}
public void pageCaculator(){
if(count >0){
pageCount =count /pageSize + (count%pageSize == 0 ? 0 :1) ; //카우터링 숫자를 얼마까지 보여줄건지 결정
//시작 페이지 숫자를 설정
startPage =1;
if(currentPage %10 !=0){
startPage =(int)(currentPage/10)*10+1;
}else{
startPage =((int)(currentPage/10)-1)*10+1;
}
pageBlock=10;//카운터링 처리 숫자
endPage =startPage+pageBlock-1;//화면에 보여질 페이지의 마지막 숫자
if(endPage > pageCount) endPage =pageCount;
//이전 다음
if(startPage >pageSize) prev =startPage-10;
//다음
if(endPage < pageCount) next=startPage+10;
}
}
~~ getter , setter 처리
}
BoardList.jsp
<%@page import="model.Paging"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="model.BoardBean"%>
<%@ page import="java.util.Vector"%>
<%@ page import="model.BoardDAO"%>
<!DOCTYPE html>
<html>
<head>
<jsp:include page="Header.jsp"/>
</head>
<body>
<!-- 게시글 보기에 카운터링을 설정하기위한 변수들을 선언 -->
<%
//현재 카운터를 클릭한 번호값을 읽어옴
String pageNum =request.getParameter("pageNum");
//전체 게시글의 내용을 jsp 쪽으로 가져와야 함
BoardDAO bdao =new BoardDAO();
Paging paging=new Paging(pageNum);
//전체 게시글의 갯수를 읽어드린 메소드 호출
paging.setTotalCount(bdao.getAllCount());
//최신글 10개를 기준으로 게시글을 리턴 받아주는 메소드 호출
Vector<BoardBean> vec =bdao.getAllBoard(paging.getStartRow(), paging.getEndRow());
%>
<div class="row">
<div class="col-xs-2"></div>
<div class="col-xs-8 col-md-8">
<h2 class="text-center">전체 게시글 보기
</h2>
<p class="text-right">
<input type="button" value="글쓰기" onclick="location.href='BoardWrite.jsp'" class="btn btn-warning">
</p>
<div class="table-responsive">
<table class="table table-bordered table-striped" >
<tr>
<th>번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
<%-- <%
int k=0;
for(BoardBean bean : vec){
%>
<tr>
<td><%= k+1%></td>
<td><a href="BoardInfo.jsp?num=<%= bean.getNum() %>" ><%= bean.getSubject() %></a></td>
<td><%=bean.getWriter() %></td>
<td><%= bean.getReg_date() %></td>
<td><%= bean.getReadcount() %></td>
</tr>
<% k++;} %>
--%>
<%
for(int i=0; i<vec.size(); i++){
BoardBean bean =vec.get(i); //벡터에 저장되어 있는 빈클래스를 하나씩 추출
%>
<tr>
<td><%= paging.getNumber() -i %></td>
<td><a href="BoardInfo.jsp?num=<%= bean.getNum() %>" >
<%
if(bean.getRe_step() >1){
for(int j =0; j<(bean.getRe_step()*5); j++){
%>
<%
}
}
%>
<%= bean.getSubject() %></a></td>
<td><%=bean.getWriter() %></td>
<td><%= bean.getReg_date() %></td>
<td><%= bean.getReadcount() %></td>
</tr>
<% }%>
<tr>
<td colspan="5" class="text-center">
<!-- 페이지 카우터링 소스를 작성 -->
<nav>
<ul class="pagination">
<%
//이전이라는 링크를 만들건지 파악
if(paging.getStartPage() >10){
%>
<li><a href="BoardList.jsp?pageNum=<%=paging.getPrev() %>" aria-label="Previous"><span aria-hidden="true">«</span></a></li>
<%
}
//페이징 처리
for(int i=paging.getStartPage(); i<=paging.getEndPage(); i++){
%>
<li <% if(i==Integer.parseInt(request.getParameter("pageNum")))
out.print("class='active'");
%>><a href="BoardList.jsp?pageNum=<%=i %>"><%=i %><span class="sr-only">(current)</span></a></li>
<%
}
//다음 이라는 링크를 만들건지 파악
if( paging.getEndPage() < paging.getPageCount()){
%>
<li><a href="BoardList.jsp?pageNum=<%=paging.getNext() %>" aria-label="next"><span aria-hidden="true">»</span></a></li>
<%
}
%>
</ul>
</nav>
</td>
</tr>
</table>
</div>
</div>
</div>
<jsp:include page="Bottom.jsp"/>
</body>
</html>
동영상 강좌와 다르게 모바일 적용이 가능한 반응형 부트스트랩을 사용하였다.
여기서는 jsp 를 배우는 강좌 이기 때문에 html 적 요소에는 비중있게 생각 하지 않아도 될 것이다.
또한, 일부 자바 코드는 제 입맛에 맞게 변경 하였습니다.
혹시, 이 강의를 들으면서 제 글을 읽고 소스코드를 참조하는 수강생이 있다면 동영상의 코드와 다르다고 생각지 마세요. 대부분 동여상 내용과 같으니 학습에 도움이 될거라 생각 합니다.
소스 : https://github.com/braverokmc79/jsp_sin
유튜브 동영상 출처 :
강사 : 신형섭(잭임연구원)
저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.















댓글 ( 4)
댓글 남기기