본문 바로가기
수업(국비지원)/JSP

[JSP] MVC MODEL2 방식 - 게시글 목록(list)

by byeolsub 2023. 4. 20.

📌 list.jsp

<html>
<head>
<meta charset="UTF-8">
<title>게시글 목록</title>
</head>
<body>
	<!-- table list start -->
	<div class="container">
		<h2  id="center">${boardName}</h2>
        <p align="right">
        <c:if test="${boardcount > 0}">글개수:${boardcount}</c:if>
        <c:if test="${boardcount == 0 }">등록된 게시물이 없습니다.</c:if>
        </p>
		<table class="table table-hover">
			<thead>
				<tr>
					<th>번호</th>
					<th>제목</th>
					<th>작성자</th>
					<th>등록일</th>
					<th>파일</th>
					<th>조회수</th>
				</tr>
			</thead>
			<tbody>
			<c:forEach var="b" items="${list}">
				<tr>
					<td>${boardnum}</td>
					<c:set var="boardnum" value="${boardnum - 1}"/>
					<td>
					 <a href="info?num=${b.num}">${b.subject}</a></td>
					<td>${b.writer}</td>
					<td>${b.regdate}</td>
					<td>
					 <a href="../upload/${b.file1}">${b.file1}</a></td>
					<td>${b.readcnt}</td>
				</tr>
				</c:forEach>
			</tbody>
		</table>
		<c:if test="${(param.boardid != 1) || (sessionScope.login == 'admin')}">
		              <p align="right"><a href="writeForm">게시글 입력</a></p>
		</c:if>     
<%-- 페이징 부분 --%>		         
		<div class="container">
		<ul class="pagination justify-content-center">
   <li class="page-item <c:if test='${startPage <= bottomLine}'>disabled</c:if>">
     <a class="page-link" href="list?pageNum=${startPage - bottomLine}">Previous</a></li>
  <c:forEach var="i" begin="${startPage}" end="${endPage}">
  <li class="page-item<c:if test='${i == pageInt}'>active</c:if>">
     <a class="page-link" href="list?pageNum=${i}">${i}</a>
  </li></c:forEach>
  <li class="page-item<c:if test='${endPage >= maxPage}'>disabled</c:if>">
     <a class="page-link" href="list?pageNum=${startPage + bottomLine}">Next</a></li>
</ul> </div>
	</div>
	<!-- table list end -->
</body>
</html>

 

 

📌 boardController.java 추가

@RequestMapping("list")
	public String list (HttpServletRequest request, HttpServletResponse response) { 
		try {
			request.setCharacterEncoding("UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		HttpSession session = request.getSession();
		if(request.getParameter("boardid") != null) {
			session.setAttribute("boardid",request.getParameter("boardid"));
			session.setAttribute("pageNum","1");
		}
		String boardid = (String)session.getAttribute("boardid");
		if(boardid == null) boardid = "1";
		int pageInt = 1;
		int limit = 10;
		if(request.getParameter("pageNum") != null) {
			session.setAttribute("pageNum",request.getParameter("pageNum"));
		}
		String pageNum = (String)session.getAttribute("pageNum");
		if(pageNum == null) {
			pageNum = "1";
		}
		pageInt = Integer.parseInt(pageNum);
		
//		int boardcount = dao.boardCount(boardid);
//		List<Board> list = dao.list(pageInt, limit, boardid); 
		int boardcount = 0;
		List<Board> list = null;
		int boardnum = boardcount - (pageInt - 1) * limit;
		int bottomLine = 3;
		int startPage = (pageInt - 1) / bottomLine * bottomLine + 1;
		int endPage = startPage + bottomLine - 1;
		int maxPage = (boardcount / limit) + (boardcount % limit == 0 ? 0 : 1);
		if(endPage > maxPage) endPage = maxPage;
		String boardName = "공지사항";
		switch(boardid) {
		case "3": 
			boardName = "QNA"; break;
		case "2":
			boardName = "자유게시판"; break;
		}
		request.setAttribute("boardName",boardName);
		request.setAttribute("pageInt",pageInt);
		request.setAttribute("boardid",boardid);
		request.setAttribute("boardcount",boardcount);
		request.setAttribute("list",list);
		request.setAttribute("boardnum",boardnum);
		request.setAttribute("startPage",startPage);
		request.setAttribute("bottomLine",bottomLine);
		request.setAttribute("endPage",endPage);
		request.setAttribute("maxPage",maxPage);
		return "/view/board/list.jsp";
	}