반응형
1. 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("pageNum", page.getPageNum());
model.addAttribute("startPageNum", page.getStartPageNum());
model.addAttribute("endPageNum", page.getEndPageNum());
model.addAttribute("prev", page.getPrev());
model.addAttribute("next", page.getNext());
model.addAttribute("select", num);
/*
// 게시물 총 갯수
int count = service.count();
// 한 페이지에 출력할 게시물 갯수
int postNum = 10;
// 하단 페이징 번호 ([ 게시물 총 갯수 ÷ 한 페이지에 출력할 갯수 ]의 올림)
int pageNum = (int)Math.ceil((double)count/postNum);
// 출력할 게시물
int displayPost = (num - 1) * postNum;
// 한번에 표시할 페이징 번호의 갯수
int pageNum_cnt = 10;
// 표시되는 페이지 번호 중 마지막 번호
int endPageNum = (int)(Math.ceil((double)num / (double)pageNum_cnt) * pageNum_cnt);
//표시되는 페이지 번호 중 첫번째 번호
int startPageNum = endPageNum - (pageNum_cnt -1);
//마지막 번호 재계산
int endPageNum_tmp = (int)(Math.ceil((double)count) / (double)pageNum_cnt);
if(endPageNum > endPageNum_tmp) {
endPageNum = endPageNum_tmp;
}
boolean prev = startPageNum == 1 ? false : true;
boolean next = endPageNum * pageNum_cnt >=count ? false : true;
List list = null;
list = service.listPage(displayPost, postNum);
model.addAttribute("list", list);
model.addAttribute("pageNum", pageNum);
//시작 및 끝 번호
model.addAttribute("startPageNum", startPageNum);
model.addAttribute("endPageNum", endPageNum);
// 이전 및 다음
model.addAttribute("prev", prev);
model.addAttribute("next", next);
// 현재 페이지를 select에 담아서 보냄
model.addAttribute("select", num);
*/
}
}
2. 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="${prev }">
<span>[ <a href="/board/listPage?num=${startPageNum - 1 }">이전</a>]</span>
</c:if>
<c:forEach begin="${startPageNum}" end="${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="${next}">
<span>[<a href="/board/listPage?num=${endPageNum + 1 }">다음</a>]</span>
</c:if>
<%--
<c:forEach begin="1" end="${pageNum}" var="num">
<span>
<a href="/board/listPage?num=${num}">${num}</a>
</span>
</c:forEach>
--%>
</div>
</body>
</html>
반응형
'2020 > Basic Spring board' 카테고리의 다른 글
#12 스프링 게시판 만들기 (페이지 처리 분리 ) (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 |