PAGING(sql)

 | JSP
2012. 5. 8. 18:17

  -- 페이징 기법.  가정.
  --  총레코드 수:33      int totalRowCount = 33
  --  목록수:30          int size = 10
  --  총 페이지수 :(총레코드수 -1)/목록수 +1    int totalPageCount = (totalRowCount-1)/listSize+1
  --  현제 페이지 :3      int curPage = 3
  --  시작행 : (페이지 -1)

 

            psmt=conn.prepareStatement(sb.toString());
            int startRow = 1;
            int endRow = 10;
            if(paramMap.containsKey("startRow")){
                startRow=(Integer)paramMap.get("startRow");
            }
            if(paramMap.containsKey("endRow")){
                endRow=(Integer)paramMap.get("endRow");
            }
            psmt.setInt(1,endRow);
            psmt.setInt(2,startRow);
           
            rs=psmt.executeQuery();
           

 

페이지 가져오기 쿼리문.

  select *
  from (select rownum rn,a.*
      from (select *
          from board
          order by bo_no desc
          )a
         where rownum <=? 
      )
  where rn >=? ;

 

1, 시작 페이지 넘버

2. 마지막 페이지 넘버

 

 

 

 

 

 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!-- 페이징 처리 수행 페이지 -->

 

<%--
 /*
 Input Parameter :
 이미지 파라미터
 1. firstPageImg : 처음으로 버튼 이미지
 2. prevPageImg : 이전 X 페이지로 이동 버튼 이미지
 3. nextPageImg : 다음 X 페이지로 이동 버튼 이미지
 4. lastpageImg : 마지막 페이지로 이동 버튼 이미지
 
 페이지 관련 이미지
 5. totalRowCount : 총 데이터 로우의 개수
 6. rowNumPerPage : 한페이지당 리스트할 로의 개수
 7. pageCount  : 한 화면에 보여질 페이지 개수 1 ~ 10, 11 ~ 20
 8. pageNo   : 페이지 번호
 9. target   : 페이징을 구분할 타겟 정보
 
 사용법
 a. 페이지 인클루드
 <jsp:include flush="true" page="./paging.jsp">
  <jsp:param name="firstPageImg" value="./images/firstImg.jpg"/>  
  <jsp:param name="prevPageImg" value="./images/prevImg.jpg"/>  
  <jsp:param name="nextPageImg" value="./images/nextImg.jpg"/>  
  <jsp:param name="lastPageImg" value="./images/lastImg.jpg"/>  
  <jsp:param name="totalRowCount" value="105"/>  
  <jsp:param name="rowNumPerPage" value="10"/>  
  <jsp:param name="pageCount" value="10"/>  
  <jsp:param name="pageNo" value="3"/>  
  <jsp:param name="target" value="TEST_PAGE"/>  
 </jsp:include>
 
 b. 자바 스크립트 작성
 <script type="text/javascript">
 <!--
  function searchByTarget(pageNo, target)
  {
   // TODO
  }
 //-->
 </script>
 */
--%>
<%
 int totalRowCount  = 1;  // 전체 로 개수
 int rowNumPerPage  = 5; //  페이지당 로의 개수
 int pageCount   = 10; // 한 화면에 보여질 페이지 번호 개수
 int pageNo    = 1; // 현재 선택된 페이지 번호
 
 String firstPageImg  = "/blog/images/bl_nv_start.gif";   // 처음 페이지 이동 이미지
 String prevPageImg  = "/blog/images/bl_nv_prev.gif";   // 이전 X 페이지 이동 이미지
 String nextPageImg  = "/blog/images/bl_nv_next.gif";   // 다음 X 페이지 이동 이미지   
 String lastPageImg  = "/blog/images/bl_nv_last.gif";   // 마지막 페이지 이동 이미지
 
 firstPageImg = request.getParameter("firstPageImg")== null ? firstPageImg : request.getParameter("firstPageImg");
 prevPageImg  = request.getParameter("prevPageImg") == null ? prevPageImg : request.getParameter("prevPageImg");
 nextPageImg  = request.getParameter("nextPageImg") == null ? nextPageImg : request.getParameter("nextPageImg");
 lastPageImg  = request.getParameter("lastPageImg") == null ? lastPageImg : request.getParameter("lastPageImg");
 
 
 String target   = request.getParameter("target");   // 페이징 구분 타겟 코드(한번에 페이징이 여러개인경우 구분해주는 기능)
 try {
  totalRowCount    = Integer.parseInt(request.getParameter("totalRowCount")); 
 } catch (NumberFormatException e) {
 }
 try {
  rowNumPerPage    = Integer.parseInt(request.getParameter("rowNumPerPage")); 
 } catch (NumberFormatException e) {
 }
 try {
  pageCount    = Integer.parseInt(request.getParameter("pageCount"));  
 } catch (NumberFormatException e) {
 }
 try {
  pageNo     = Integer.parseInt(request.getParameter("pageNo"));   
 } catch (NumberFormatException e) {
 }
 
 int lastPageNum   = (totalRowCount - 1) / rowNumPerPage + 1;   // 전체 페이지 개수
 int startPageNum   = ((pageNo - 1) / pageCount) * pageCount + 1;  // 화면에 보여질 시작 페이지 번호
 int endPageNum    = startPageNum + pageCount - 1;      // 화면에 보여질 종료 페이지 번호
 if(endPageNum > lastPageNum) endPageNum = lastPageNum;      // 종료 페이지 범위 처리
 
 int prevPageGroup = 1;
 int nextPageGroup = lastPageNum;
 
 if(startPageNum - pageCount < 1) {
  prevPageGroup = 1;
 }
 else {
  prevPageGroup = startPageNum - endPageNum; 
  if(prevPageGroup <= 0) {prevPageGroup = 1;}
 }
 
 if(endPageNum + 1 > lastPageNum) {
  nextPageGroup = lastPageNum;
 }
 else {
  nextPageGroup = endPageNum + 1;
 }
%>

 

<!-- 처음 페이지로 이동-->
<a href="javascript:searchByTarget('1', '<%=target %>');">
 <img src="<%=firstPageImg %>" border="0" alt="처음 페이지" align="absmiddle">
</a>

 

<!-- 이전 X 페이지 이동 -->
<a href="javascript:searchByTarget('<%=prevPageGroup %>', '<%=target %>');">
 <img src="<%=prevPageImg %>" border="0" alt="이전 <%=pageCount %>페이지" align="absmiddle">
</a>

 

<!-- 페이지 번호 표시 -->
<%
 for (int i = startPageNum; i <= endPageNum; i++) {
  if (i == pageNo) {
%>
  <font color="RED"><b><%=i %></b></font> |
<%
  }
  else {
%>
  <a href="javascript:searchByTarget('<%=i %>', '<%=target %>');">
   <font color="NAVY"><%=i %></font>
  </a>|
<%
  }  
 }
%>

 

<!-- 다음 X 페이지 이동 -->
<a href="javascript:searchByTarget('<%=nextPageGroup %>', '<%=target %>');">
 <img src="<%=nextPageImg %>" border="0" alt="다음 <%=pageCount %>페이지" align="absmiddle">
</a>

 

<!-- 마지막 페이지 이동 -->
<a href="javascript:searchByTarget('<%=lastPageNum %>', '<%=target %>');">
 <img src="<%=lastPageImg %>" border="0" alt="마지막  페이지" align="absmiddle">
</a>

 


첨부파일 내용 다운로드 :

 

 

 

 

 

이 글은 스프링노트에서 작성되었습니다.


'JSP' 카테고리의 다른 글

Propertise 한글 사용  (0) 2012.05.08
POI  (0) 2012.05.08
동적쿼리문  (0) 2012.05.08
Multiple Parameter  (0) 2012.05.08
log4j구현환경제공.  (0) 2012.05.08
Posted by 사라링
BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
디자인패턴 (1)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
웹스퀘어_ (0)
Total :
Today : Yesterday :