1. /com/board/domain/page클래스를 만들고 분리 하겠습니다.
변수를 설정하고 getter와 setter를 설정합니다.
package com.board.domain;
public class Page {
// 현재 페이지 번호
private int num;
// 게시물 총 갯수
private int count;
// 한 페이지에 출력할 게시물 갯수
private int postNum = 10;
// 하단 페이징 번호 ([ 게시물 총 갯수 ÷ 한 페이지에 출력할 갯수 ]의 올림)
private int pageNum;
// 출력할 게시물
private int displayPost;
// 한번에 표시할 페이징 번호의 갯수
private int pageNumCnt = 10;
// 표시되는 페이지 번호 중 마지막 번호
private int endPageNum;
// 표시되는 페이지 번호 중 첫번째 번호
private int startPageNum;
// 다음/이전 표시 여부
private boolean prev;
private boolean next;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getPostNum() {
return postNum;
}
public void setPostNum(int postNum) {
this.postNum = postNum;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getDisplayPost() {
return displayPost;
}
public void setDisplayPost(int displayPost) {
this.displayPost = displayPost;
}
public int getPageNumCnt() {
return pageNumCnt;
}
public void setPageNumCnt(int pageNumCnt) {
this.pageNumCnt = pageNumCnt;
}
public int getEndPageNum() {
return endPageNum;
}
public void setEndPageNum(int endPageNum) {
this.endPageNum = endPageNum;
}
public int getStartPageNum() {
return startPageNum;
}
public void setStartPageNum(int startPageNum) {
this.startPageNum = startPageNum;
}
public boolean getPrev() {
return prev;
}
public boolean getNext() {
return next;
}
private void dataCalc() {
// 마지막 번호
endPageNum = (int)(Math.ceil((double)num / (double)pageNumCnt) * pageNumCnt);
// 시작 번호
startPageNum = endPageNum - (pageNumCnt - 1);
// 마지막 번호 재계산
int endPageNum_tmp = (int)(Math.ceil((double)count / (double)pageNumCnt));
if(endPageNum > endPageNum_tmp) {
endPageNum = endPageNum_tmp;
}
prev = startPageNum == 1 ? false : true;
next = endPageNum * pageNumCnt >= count ? false : true;
displayPost = (num - 1) * postNum;
}
}
2. boardController
package com.board.controller;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.board.domain.BoardVO;
import com.board.domain.Page;
import com.board.service.BoardService;
@Controller
@RequestMapping("/board/*")
public class BoardController {
@Inject
BoardService service;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public void getList(Model model) throws Exception {
List<BoardVO> list = null;
list = service.list();
model.addAttribute("list", list);
}
// 게시물 작성 (서버에서 사용자로 데이터 이동 GET메서드)
@RequestMapping(value = "/write", method = RequestMethod.GET)
public void getWrite() throws Exception{
}
//게시물 작성 (사용자에서 서버로 데이터 이동 POST메서드
@RequestMapping(value = "/write", method = RequestMethod.POST)
public String postWrite(BoardVO vo) throws Exception{
service.write(vo);
return "redirect:/board/list";
}
//게시물 조회
@RequestMapping(value= "/view", method = RequestMethod.GET)
public void getView(@RequestParam("bno") int bno, Model model) throws Exception{
BoardVO vo = service.view(bno);
model.addAttribute("view", vo);
}
//게시물 수정
@RequestMapping(value = "/modify", method = RequestMethod.GET)
public void getModify(@RequestParam("bno") int bno, Model model) throws Exception {
BoardVO vo = service.view(bno);
model.addAttribute("view", vo);
System.out.println("view" + bno);
}
//게시물 수정
@RequestMapping(value ="/modify", method = RequestMethod.POST)
public String postModify(BoardVO vo) throws Exception{
service.modify(vo);
return "redirect:/board/view?bno=" + vo.getBno();
}
//게시물 삭제
@RequestMapping(value = "/delete", method = RequestMethod.GET)
public String getDelete(@RequestParam("bno") int bno) throws Exception{
service.delete(bno);
return "redirect:/board/list";
}
// 게시물 목록 + 페이징 추가
@RequestMapping(value = "/listPage", method = RequestMethod.GET)
public void getListPage(Model model, @RequestParam("num") int num) throws Exception {
Page page = new Page();
page.setNum(num);
page.setCount(service.count());
List list = null;
list = service.listPage(page.getDisplayPost(), page.getPostNum());
model.addAttribute("list", list);
model.addAttribute("page", page);
model.addAttribute("select", num);
}
}
3. listPage.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시물 목록</title>
</head>
<body>
<div id="nav">
<%@ include file="../include/nav.jsp" %>
</div>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>작성일</th>
<th>작성자</th>
<th>조회수</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list}" var="list">
<tr>
<td>${list.bno}</td>
<td>
<a href="/board/view?bno=${list.bno}">${list.title}</a>
</td>
<td>${list.regDate}</td>
<td>${list.writer}</td>
<td>${list.viewCnt}</td>
</tr>
</c:forEach>
</tbody>
</table>
<div>
<c:if test="${page.prev }">
<span>[ <a href="/board/listPage?num=${page.startPageNum - 1 }">이전</a>]</span>
</c:if>
<c:forEach begin="${page.startPageNum}" end="${page.endPageNum}" var="num">
<span>
<c:if test="${select != num }">
<a href="/board/listPage?num=${num}">${num}</a>
</c:if>
<c:if test="${select == num }">
<b>${num }</b>
</c:if>
</span>
</c:forEach>
<c:if test="${page.next}">
<span>[<a href="/board/listPage?num=${page.endPageNum + 1 }">다음</a>]</span>
</c:if>
</div>
</body>
</html>
'2020 > Basic Spring board' 카테고리의 다른 글
#11 스프링 게시판 만들기 (너무 많은 페이지 줄이기 페이징 처리 2) (0) | 2020.06.12 |
---|---|
#10 스프링 게시판 만들기 (페이징 처리 1) (2) | 2020.06.12 |
#9 스프링 게시판 만들기 ( 게시물 삭제) (0) | 2020.06.11 |
#8 스프링 게시판 만들기 ( nav) (0) | 2020.06.11 |
#7 스프링 게시판 만들기 (게시물 수정) (0) | 2020.06.11 |