기본 문제 해결 방안을 페이징 쿼리

  첫 번째 단계 : 우리는 먼저 각 페이지를 넣어 데이터의 양을 결정, 데이터의 양을, 얼마나 많은 페이지가 다음에 이전 및 위해 분할 할, 홈, 도구 페이지를 만들 수에 따라 페이지 분석, 종료 번호, 페이지의 총 ...의 반환 페이지 웹 페이지의 현재 수를 (데이터 페이지의 수는 기본적으로없는 경우), 올바른 다음을 반환 받아, 서블릿은 페이지 쿼리 도구를 호출하여 페이지의 정확한 수를 얻을 수 있습니다. 마지막으로, 데이터는 JSP 페이지 표시로 돌아갑니다.

  도구 그래서 :

com.person.util 패키지, 

공공  클래스 PageUtil {
     개인 정수 currentPage; // 이 페이지에 
    개인 정수 firstPage; // 먼저 
    개인 정수 LASTPAGE; // 
    개인 정수 nextPage; // 다음 
    개인 정수 proPage; / / 이전 

    개인 정수 TotalPage; // 페이지 
    개인 정수에서는 totalCount; // 총 데이터 양이 

    개인 정수 인덱스; // 인덱스 탭 쿼리 

    개인 PageUtil () {} 

    공공PageUtil (문자열 currentPage, 정수에서는 totalCount) {
          .currentPage = currentPage == null이 ? 1 :있는 Integer.parseInt (currentPage);
         .totalPage = (에서는 totalCount + 4 ) / (5) ; 

         .firstPage = 1 ;
         .lastPage = .totalPage; 

         .nextPage =  .currentPage ==  .lastPage?  .lastPage :  .currentPage + 1 ;
         .proPage =  .currentPage == 1? 1 : 이것은 .currentPage- 1 ;
         .totalCount = 에서는 totalCount;
         있는 .index = (  .currentPage- 1 ) * 5 ; 
    } 

    공공 정수 getCurrentPage는 () {
         반환 currentPage을; 
    } 

    공공  공극 setCurrentPage (정수 currentPage) {
          .currentPage = currentPage; 
    } 

    공공 정수 getFirstPage는 () {
         반환 firstPage을; 
    } 

    공공  무효setFirstPage (정수 firstPage) {
          .firstPage = firstPage; 
    } 

    공공 정수 getLastPage는 () {
         반환 LASTPAGE을; 
    } 

    공공  공극 setLastPage (정수 LASTPAGE) {
          .lastPage = LASTPAGE; 
    } 

    공공 정수 getNextPage는 () {
         반환 nextPage을; 
    } 

    공공  공극 setNextPage (정수 nextPage) {
          .nextPage = nextPage; 
    } 

    공공 정수 getProPage () {
         반환  proPage을;
    } 

    공개  공극 setProPage (정수 proPage) {
          .proPage = proPage; 
    } 

    공공 정수 getTotalPage는 () {
         반환 totalPage을; 
    } 

    공공  공극 setTotalPage (정수 totalPage) {
          .totalPage = totalPage; 
    } 

    공공 정수 getTotalCount는 () {
         반환 에서는 totalCount을; 
    } 

    공공  공극 setTotalCount (정수에서는 totalCount) {
          .totalCount = 에서는 totalCount; 
    } 

    공개 정수 getIndex () {
         반환색인; 
    } 

    공공  공극 setIndex (정수 인덱스) {
          있는 .index = 인덱스; 
    } 

    @Override 
    공공 문자열 toString () {
         반환  " PageUtil { " +
                 " currentPage = " + currentPage +
                 " , firstPage = " + firstPage +
                 " , LASTPAGE = " + LASTPAGE +
                 " , nextPage = " + nextPage +
                 " , proPage = " + proPage +
                 " , totalPage = " + totalPage +
                 " ,가에서는 totalCount = " +에서는 totalCount +
                 " , 인덱스 = " + 인덱스 +
                 " } " ; 
    } 
}

그런 다음 DAO에 의해 제조 할 수 :

인터페이스 :

 / * * 
     페이지 (페이지)의 특정 고정 된 수에 따라 정보 * 쿼리 
     파라미터 : 인덱스 
     * @return 
     * / 
    목록 <지도 <문자열, 객체 >> getAdminByIndex (정수 색인);

IMPL :

@Override
     공개 목록 <지도 <문자열, 객체 >> getAdminByIndex (정수 지수) { 
        문자열 SQL = " 제한 관리자에서 * 선택, 5? " ;
        반환 DBUtil.executeQuery (SQL, 인덱스); 
    }

 

준비 작업은 서블릿을 작성 완료 후 수행 :

 

패키지 com.person.servlet; 

수입 com.person.dao.IAdminDAO; 
수입 com.person.dao.impl.AdminDAOImpl; 
수입 com.person.util.PageUtil; 

수입 javax.servlet.ServletException; 
수입 javax.servlet.annotation.WebServlet; 
수입 인 javax.servlet.http.HttpServlet; 
수입 나오는 javax.servlet.http.HttpServletRequest; 
수입의 javax.servlet.http.HttpServletResponse; 
수입 때 java.io.IOException; 
수입은 java.util.List; 
수입 java.util.Map; 

@WebServlet는 ( " /dromAdminHome.isLogin " )
 공공  클래스 DromAdminHomeServlet은 HttpServlet을 확장 { 
    @Override는 
    보호  무효- 서비스는 (HttpServletRequest의 REQ의 HttpServletResponse를 RESP)는 ServletException을, IOException가 {던졌습니다
         // 이 정보는 페이지의 페이지를 통해 전달되는 
        문자열 = req.getParameter 페이지 ( " 페이지 " );
         // 도구로 페이지 정보 설정 
        PageUtil pageUtil = 새로운 새로운 PageUtil을 ( 페이지, 7 ) 
        
        //이 :이 페이지의 정보를 조회 
        IAdminDAO adminDAO = 새 새 , AdminDAOImpl ()을 
        목록 <지도 <문자열, 객체 >> allAdmin = ;) adminDAO.getAdminByIndex (pageUtil.getIndex () 
        
        // 정보를 체크 아웃 정보 도구의 다른 페이지도 예금 REQ에서 계산하는 동안 REQ의 클릭으로 설정
         // 이 서블릿의 구현을 클릭하면, 그래서 다음 다른 페이지의 외부 페이지를 계산합니다 페이지를 클릭 이 페이지의 정보는 쿼리를 표시
        req.setAttribute ( " allAdmin " , allAdmin); 
        req.setAttribute ( " pageData " , pageUtil); 

        req.getRequestDispatcher ( " /views/dromAdminHome.jsp " )의 .forward (REQ, RESP); 

    } 
}

 

 

 

마지막으로, JSP 페이지를 쓰기 :

 

<표 cellspacing = " 0 픽셀 " > 
        <TR> 
            <TD> ID </ TD> 
            <TD> 이름 </ TD> 
            <TD> 성별 </ TD> 
            <TD> 전화 </ TD> 
            <TD> 기숙사 </ TD> 
            <TD> 이름 </ TD> 
            <TD> 동작 </ TD> 
        </ TR> 
        <C : foreach는 VAR = " " 항목 = " $ {allAdmin} " > 
            <TR> 
                <TD> $ {A .ID} </ TD> 
                <TD> a.name $ {} </ TD>
                <TD> $ {a.gender} </ TD> 
                <TD> $ {a.telephone} </ TD>
                <TD> $ {a.dormitory} </ TD> 
                <TD> $ {a.username} </ TD> 
                <TD> <A href= "/yuer/views/updateAdmin.jsp">修改</A> < A HREF = " /yuer/deleteAdmin?id=${a.id} " >删除</A> </ TD> 
            </ TR> 
        </ C : 대해 forEach> 
    </ 테이블> 
    <DIV 스타일 = " 텍스트 정렬 : 중심 " > 
        <a href=의"/yuer/dromAdminHome.isLogin?page=${pageData.firstPage} ">首页</a>를 
        <A HREF = " / yuer / dromAdminHome.isLogin? 페이지 = $ {pageData.proPage} " >上一页</a>을 
        <A HREF =
 " /Yuer/dromAdminHome.isLogin?page=${pageData.nextPage} " > 다음 </a>에 
        의 <a href= "/yuer/dromAdminHome.isLogin?page=${pageData.lastPage}"> 끝 < / A> 
        공동 pageData.currentPage {} {$의 페이지 당 /${pageData.totalPage]} [ 5 ] 제
     </ DIV>

 

 

 

~~~~~~~~~~~ 이상

추천

출처www.cnblogs.com/fanqiexin/p/11105618.html