[JAVA, JSP JSTL]JSTL을 이용한 페이지 나누기.
페이지를 나누기 위한 코딩을 해보신 분들은 아시겠지만
안에서 돌아가는 로직이 꽤 복잡하고
jsp의 문법의 한계로 인해 구현하기 적잖은 노력이 들어가게 됩니다.
jstl을 이용해서 페이징을 구현해 봤는데
아래의 리스트 구현하기처럼 가독성 증가와 노동력 감소의
효과를 얻을수 있었습니다.
////////////board_ludi( List , Update , Delete , Insert의 준말입니다)//////
<%@ page contentType="text/html;charset=EUC-KR" %>
<%@ page import="java.util.*" %>
<%@ page import="webmaster.mboard.boardmanager.model.*"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%
String current_page = request.getParameter( "current_page" );
BoardDAO boardDAO = new BoardDAO();
int board_count = boardDAO.getBoardCount();
int current_pageInt = Integer.parseInt( current_page );
int page_count = ( board_count / 10 ) + 1;
int first_page = ( ( ( current_pageInt - 1) / 10 ) * 10 )+ 1;
%>
<!--########## 페이징에 필요한 값 받기 ############ -->
<c_rt:set var="board_count" value="<%=new Integer(board_count)%>"/>
<c_rt:set var="current_page" value="<%=new Integer(current_page)%>"/>
<c_rt:set var="page_count" value="<%=new Integer(page_count)%>"/>
<c_rt:set var="first_page" value="<%=new Integer(first_page)%>"/>
<!--########## 페이지 카운터 출력 ############ -->
<table>
<tr>
<td>
<!--########## 이전 페이지 링크 출력 ############ -->
<c:if test="${ first_page > 10 }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${ first_page - 1 }"/>">[ 이전 ]</a>
</c:if>
<!--########## 페이지 카운터 출력 ############ -->
<c:forEach var="counter" begin="${first_page}" end="${first_page+9}">
<c:if test="${ counter <= page_count }">
<c:choose>
<c:when test="${ counter == current_page }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${counter}"/>"><span class="point"><c:out value="${counter}"/></span></a>
</c:when>
<c:when test="${ counter != current_page }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${counter}"/>">[ <c:out value="${counter}"/> ]</a>
</c:when>
</c:choose>
</c:if>
</c:forEach>
<!--########## 다음 페이지 링크 출력 ############ -->
<c:if test="${ first_page+9 < page_count }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${ first_page + 10 }"/>">[ 다음 ]</a>
</c:if>
</td>
</tr>
</table>
안에서 돌아가는 로직이 꽤 복잡하고
jsp의 문법의 한계로 인해 구현하기 적잖은 노력이 들어가게 됩니다.
jstl을 이용해서 페이징을 구현해 봤는데
아래의 리스트 구현하기처럼 가독성 증가와 노동력 감소의
효과를 얻을수 있었습니다.
////////////board_ludi( List , Update , Delete , Insert의 준말입니다)//////
<%@ page contentType="text/html;charset=EUC-KR" %>
<%@ page import="java.util.*" %>
<%@ page import="webmaster.mboard.boardmanager.model.*"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c_rt"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%
String current_page = request.getParameter( "current_page" );
BoardDAO boardDAO = new BoardDAO();
int board_count = boardDAO.getBoardCount();
int current_pageInt = Integer.parseInt( current_page );
int page_count = ( board_count / 10 ) + 1;
int first_page = ( ( ( current_pageInt - 1) / 10 ) * 10 )+ 1;
%>
<!--########## 페이징에 필요한 값 받기 ############ -->
<c_rt:set var="board_count" value="<%=new Integer(board_count)%>"/>
<c_rt:set var="current_page" value="<%=new Integer(current_page)%>"/>
<c_rt:set var="page_count" value="<%=new Integer(page_count)%>"/>
<c_rt:set var="first_page" value="<%=new Integer(first_page)%>"/>
<!--########## 페이지 카운터 출력 ############ -->
<table>
<tr>
<td>
<!--########## 이전 페이지 링크 출력 ############ -->
<c:if test="${ first_page > 10 }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${ first_page - 1 }"/>">[ 이전 ]</a>
</c:if>
<!--########## 페이지 카운터 출력 ############ -->
<c:forEach var="counter" begin="${first_page}" end="${first_page+9}">
<c:if test="${ counter <= page_count }">
<c:choose>
<c:when test="${ counter == current_page }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${counter}"/>"><span class="point"><c:out value="${counter}"/></span></a>
</c:when>
<c:when test="${ counter != current_page }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${counter}"/>">[ <c:out value="${counter}"/> ]</a>
</c:when>
</c:choose>
</c:if>
</c:forEach>
<!--########## 다음 페이지 링크 출력 ############ -->
<c:if test="${ first_page+9 < page_count }">
<a href="/yfarm/webmaster/AdminBoardList.do?current_page=<c:out value="${ first_page + 10 }"/>">[ 다음 ]</a>
</c:if>
</td>
</tr>
</table>
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주말]
[10/26]C#,ASP.NET마스터
[10/26]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[10/31]JAVA&WEB프레임워크실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[10/26]C#,ASP.NET마스터
[10/26]Spring3.X, MyBatis, Hibernate실무과정
[11/2]JAVA&WEB프레임워크실무과정
[평일야간]
[10/29]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[10/31]JAVA&WEB프레임워크실무과정
[주간]
[11/4]Spring3.X, MyBatis, Hibernate실무과정
[기타 다른 강좌는 아래 해당 카테고리를 클릭해주세요]
댓글 없음:
댓글 쓰기