Pagination

기록하는 용도·2022년 10월 6일
0

화면에서 Pagination예제를 나타낼 링크를 생성한다.


index.jsp

<a href="Test11Sevlet">JSTL loop forEach begin end (이후 페이징 처리)</a><br><br>


Pagination.java

package org.kosta.webstudy16.model;
//paging bean
public class Pagination {
	private int startPage;
	private int endPage;
	private boolean previousPageGroup;
	private boolean nextPageGroup;
    
	public int getStartPage() {
		return startPage;
	}
	public void setStartPage(int startPage) {
		this.startPage = startPage;
	}
	public int getEndPage() {
		return endPage;
	}
	public void setEndPage(int endPage) {
		this.endPage = endPage;
	}
	public boolean isPreviousPageGroup() {
		return previousPageGroup;
	}
	public void setPreviousPageGroup(boolean previousPageGroup) {
		this.previousPageGroup = previousPageGroup;
	}
	public boolean isNextPageGroup() {
		return nextPageGroup;
	}
	public void setNextPageGroup(boolean nextPageGroup) {
		this.nextPageGroup = nextPageGroup;
	}
	@Override
	public String toString() {
		return "Pagination [startPage=" + startPage + ", endPage=" + endPage + ", previousPageGroup="
				+ previousPageGroup + ", nextPageGroup=" + nextPageGroup + "]";
	}
}

시작페이지 startPage, 끝페이지 endPage 이전페이지 그룹으로 돌아갈 수 있는 previousPageGroup, 다음 페이지 그룹으로 갈 수 있는 nextPageGroup 변수를 만들고 getter, setter를 생성했다.



Test11Servlet

package org.kosta.webstudy16.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.kosta.webstudy16.model.Pagination;

/**
 * Servlet implementation class Test11Sevlet
 */
@WebServlet("/Test11Sevlet")
public class Test11Sevlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Pagination pagination = new Pagination();
		pagination.setStartPage(1);
		pagination.setEndPage(4);
		pagination.setNextPageGroup(true);
		pagination.setPreviousPageGroup(false);
		request.setAttribute("pagination", pagination);
		request.getRequestDispatcher("step11-jstl-forEach-begin-end.jsp").forward(request, response);
	}
}


Pagination pagination = new Pagination();
pagination.setStartPage(1);
pagination.setEndPage(4);

Pagination 객체를 생성하고 setter를 이용해 시작페이지, 끝페이지를 설정했다.



pagination.setNextPageGroup(true);
pagination.setPreviousPageGroup(false);

boolean 데이터 타입으로 선언한 nextPageGroup, previousPageGroup에 각 각 true, false를 넣어주었다.



request.setAttribute("pagination", pagination);
request.getRequestDispatcher("step11-jstl-forEach-begin-end.jsp").forward(request, response);

"pagination"이라는 name으로 pagination 객체를 set하고 jsp로 넘어갈 수 있도록 했다.



step11-jstl-forEach-begin-end.jsp

<c:forEach begin="1" end="5" var="page">${page}</c:forEach>

jsp에서 forEach 구문으로 begin, end옵션으로 숫자를 넘겨 화면에 출력할 수 있다.

이 예제를 활용해 pagination 객체를 받아 처리해볼수 있도록 한다.




<ul class="pagination">
  <li class="page-item"><a class="page-link" href="#">Previous</a></li>
  <c:forEach begin="1" end="5" var="page">
  <li class="page-item"><a class="page-link" href="#">${page}</a></li>
  </c:forEach>
  <li class="page-item"><a class="page-link" href="#">Next</a></li>
<ul class="pagination">

bootstrap의 pagination 소스를 활용하고, servlet에서 시작하고자하는 숫자와 끝내고싶은 숫자, 그리고 이전버튼과 다음버튼을 나타나는것의 유무를 조건문으로 처리해 나타낸다.



<ul class="pagination">
	<c:if test="${pagination.previousPageGroup}">
	 <li class="page-item"><a class="page-link" href="#">Previous</a></li>
	</c:if>
	<c:forEach begin="${pagination.startPage}" end="${pagination.endPage}" var="page">
	 <li class="page-item"><a class="page-link" href="#">${page}</a></li>
	</c:forEach>
	<c:if test="${pagination.nextPageGroup}">
	 <li class="page-item"><a class="page-link" href="#">Next</a></li>
	</c:if>
<ul class="pagination">



servlet에서 previousPageGroup를 false를, nextPageGroup를 true로 주었고 이를 조건문으로 처리해 화면에 나타낼 수 있다.

이 코드를 jstl의 set을 이용해서 코드를 간결하게 만들어본다.

<c:set var="p" value="${requestScope.pagination}" />
	<ul class="pagination">
		<c:if test="${p.previousPageGroup}">
			<li class="page-item"><a class="page-link" href="#">Previous</a></li>
		</c:if>
		<c:forEach begin="${p.startPage}" end="${p.endPage}" var="page">
			<li class="page-item"><a class="page-link" href="#">${page}</a></li>
		</c:forEach>
		<c:if test="${p.nextPageGroup}">
			<li class="page-item"><a class="page-link" href="#">Next</a></li>
		</c:if>
	<ul class="pagination">

0개의 댓글