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