Spring
12.14.(수) Spring Framework(21): 게시판 기능(6)
콜라든포비
2022. 12. 17. 23:03
게시판 목록 페이지
뷰페이지 링크 할당
boardList.jsp로 넘어와서 현재 페이지에 따라서 이동할 수 있는 페이지를 알맞게 표시해보자.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<link rel="stylesheet" href="/myapp/js_css/board.css" type="text/css">
<!-- attribute로 넘어온 변수 : list, pvo -->
<title>게시판 목록</title>
<div class="container">
<h1>게시판 목록</h1>
<div>
<a href="/myapp/board/boardPost">글 쓰기</a>
</div>
<ul class="boardList">
<li>No.</li>
<li>제목</li>
<li>작성자</li>
<li>등록일</li>
<li>조회수</li>
<c:forEach var="vo" items="${ list }">
<li>${ vo.postno }</li>
<li class="word-cut"><a href="/myapp/board/boardView?postno=${ vo.postno }">${ vo.subject }</a></li>
<li>${ vo.username }</li>
<li>${ vo.regdate }</li>
<li>${ vo.hitcount }</li>
</c:forEach>
</ul>
<!-- 페이지 처리 -->
<div class="pagesDiv">
<ul>
<!-- prev버튼 -->
<c:if test="${ pvo.nowPage==1 }">
<li>prev</li>
</c:if>
<c:if test="${ pvo.nowPage>1 }">
<li><a href="/myapp/board/boardList?nowPage=${ pvo.nowPage-1 }">prev</a></li>
</c:if>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>next</li>
</ul>
</div>
<!-- 검색 기능 -->
<div class="searchDiv">
<form action="/myapp/board/boardList">
<select name="searchKey">
<option>제목</option>
<option>내용</option>
<option>작성자</option>
</select>
<input type="text" name="searchValue" id="searchValue">
<input type="submit" value="검색">
</form>
</div>
</div>
1페이지에서는 prev페이지가 작동 안 하도록 if태그를 사용했다.
startPage를 기준으로 5개 페이지로 이동할 수 있게 각각 링크를 걸어주자.
forEach태그에 startPage와 pageCount를 이용해서 구현했다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<link rel="stylesheet" href="/myapp/js_css/board.css" type="text/css">
<!-- attribute로 넘어온 변수 : list, pvo -->
<title>게시판 목록</title>
<div class="container">
<h1>게시판 목록</h1>
<div>
<a href="/myapp/board/boardPost">글 쓰기</a>
</div>
<ul class="boardList">
<li>No.</li>
<li>제목</li>
<li>작성자</li>
<li>등록일</li>
<li>조회수</li>
<c:forEach var="vo" items="${ list }">
<li>${ vo.postno }</li>
<li class="word-cut"><a href="/myapp/board/boardView?postno=${ vo.postno }">${ vo.subject }</a></li>
<li>${ vo.username }</li>
<li>${ vo.regdate }</li>
<li>${ vo.hitcount }</li>
</c:forEach>
</ul>
<!-- 페이지 처리 -->
<div class="pagesDiv">
<ul>
<!-- prev버튼 -->
<c:if test="${ pvo.nowPage==1 }">
<li>prev</li>
</c:if>
<c:if test="${ pvo.nowPage>1 }">
<li><a href="/myapp/board/boardList?nowPage=${ pvo.nowPage-1 }">prev</a></li>
</c:if>
<!-- 페이지 번호 출력 -->
<c:forEach var="i" begin="${ pvo.startPage }" end="${ pvo.startPage+pvo.pageCount-1 }">
<!-- 출력할 페이지번호(i)는 총 페이지 수(pvo.totalPage)보다 작을때까지 출력한다 -->
<c:if test="${ i<=pvo.totalPage }">
<!-- 현재 페이지 -->
<c:if test="${ i==pvo.nowPage }">
<li style="background-color:#ddd">${ i }</li>
</c:if>
<!-- 현재 페이지 아님 -->
<c:if test="${ i!=pvo.nowPage }">
<li><a href="/myapp/board/boardList?nowPage=${ i }">${ i }</a></li>
</c:if>
</c:if>
</c:forEach>
<li>next</li>
</ul>
</div>
<!-- 검색 기능 -->
<div class="searchDiv">
<form action="/myapp/board/boardList">
<select name="searchKey">
<option>제목</option>
<option>내용</option>
<option>작성자</option>
</select>
<input type="text" name="searchValue" id="searchValue">
<input type="submit" value="검색">
</form>
</div>
</div>
prev버튼과 마찬가지로 next버튼도 링크를 걸어주자.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<link rel="stylesheet" href="/myapp/js_css/board.css" type="text/css">
<!-- attribute로 넘어온 변수 : list, pvo -->
<title>게시판 목록</title>
<div class="container">
<h1>게시판 목록</h1>
<div>
<a href="/myapp/board/boardPost">글 쓰기</a>
</div>
<ul class="boardList">
<li>No.</li>
<li>제목</li>
<li>작성자</li>
<li>등록일</li>
<li>조회수</li>
<c:forEach var="vo" items="${ list }">
<li>${ vo.postno }</li>
<li class="word-cut"><a href="/myapp/board/boardView?postno=${ vo.postno }">${ vo.subject }</a></li>
<li>${ vo.username }</li>
<li>${ vo.regdate }</li>
<li>${ vo.hitcount }</li>
</c:forEach>
</ul>
<!-- 페이지 처리 -->
<div class="pagesDiv">
<ul>
<!-- prev버튼 -->
<c:if test="${ pvo.nowPage==1 }">
<li>prev</li>
</c:if>
<c:if test="${ pvo.nowPage>1 }">
<li><a href="/myapp/board/boardList?nowPage=${ pvo.nowPage-1 }">prev</a></li>
</c:if>
<!-- 페이지 번호 출력 -->
<c:forEach var="i" begin="${ pvo.startPage }" end="${ pvo.startPage+pvo.pageCount-1 }">
<!-- 출력할 페이지번호(i)는 총 페이지 수(pvo.totalPage)보다 작을때까지 출력한다 -->
<c:if test="${ i<=pvo.totalPage }">
<!-- 현재 페이지 -->
<c:if test="${ i==pvo.nowPage }">
<li style="background-color:#ddd">${ i }</li>
</c:if>
<!-- 현재 페이지 아님 -->
<c:if test="${ i!=pvo.nowPage }">
<li><a href="/myapp/board/boardList?nowPage=${ i }">${ i }</a></li>
</c:if>
</c:if>
</c:forEach>
<!-- next버튼 -->
<c:if test="${ pvo.nowPage==pvo.totalPage }">
<li>next</li>
</c:if>
<c:if test="${ pvo.nowPage<pvo.totalPage }">
<li><a href="/myapp/board/boardList?nowPage=${ pvo.nowPage+1 }">next</a></li>
</c:if>
</ul>
</div>
<!-- 검색 기능 -->
<div class="searchDiv">
<form action="/myapp/board/boardList">
<select name="searchKey">
<option>제목</option>
<option>내용</option>
<option>작성자</option>
</select>
<input type="text" name="searchValue" id="searchValue">
<input type="submit" value="검색">
</form>
</div>
</div>
마지막으로 페이지 선택 부분이 왼쪽에 있는게 싫어서 가운데로 옮겨줬다.
@charset "UTF-8";
/* 말 줄임 : 칸 넘어가면 ... */
.word-cut{
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
.boardList, .pagesDiv>ul{
overflow:auto;
}
/* 게시판 목록 */
.boardList>li{
float:left;
height:40px;
line-height:40px;
width:10%;
border-bottom:1px solid #ddd;
}
.boardList>li:nth-child(5n+2) {
width:60%;
}
/* 페이징 */
.pagesDiv>ul>li{
float:left;
padding:5px 10px;
}
.pagesDiv>ul{
display:table;
margin:10px auto 0px;
}
/* 검색 */
.searchDiv{
padding:20px 0px;
text-align:center;
}