Pagination은 웹 응용 프로그램을 개발할 때 종종하는 작업이어야합니다. 비교적 간단한 방식으로 데이터베이스 및 뷰 레이어의 페이지 매김을 구현할 수 있어야합니다.
데이터베이스 계층에서 Hibernate를 사용하여 데이터베이스를 Pagination하고 데이터베이스에서 쿼리 된 데이터를 Javabeans로 캡슐화하십시오. 뷰 레이어에서 페이징을 쉽게 구현할 수 있습니다.
PageBean을 만듭니다
package com.fishing.common.bean; Java.util.list 가져 오기; @SuppressWarnings ( "확인되지 않은") 공개 클래스 PageBean {개인 목록 목록; // 반품 될 레코드 목록 개인 int allow; // 총 레코드 개인 int TotalPage; // 총 페이지 프라이빗 int currentPage; // 현재 페이지 프라이빗 int pagesize; // 페이지 당 레코드 수 개인 부울 ISFIRSTPAGE; // 첫 번째 페이지이든 개인 부울 ISLASTPAGE; // 마지막 페이지이든 개인 부울 haspreviouspage; // 이전 페이지 개인 부울 hasnextPage가 있습니까? // 다음 페이지 공개 목록 GetList () {return list; } public void setList (목록 목록) {this.list = list; } public int getAllrow () {return allow; } public void setallrow (int allrow) {this.allrow = allrow; } public int getTotalPage () {return totalpage; } public void settotalpage (int totalpage) {this.totalpage = TotalPage; } public int getCurrentPage () {return currentPage; } public void setCurrentPage (int currentPage) {this.currentPage = currentPage; } public int getPagesize () {return pagesize; } public void setPagesize (int pagesize) {this.pagesize = pagesize; } / *** / / ***초기화 페이징 정보* / public void init () {this.isfirstpage = isfirstpage (); this.islastpage = islastpage (); this.haspreviouspage = ishaspreviouspage (); this.hasnextPage = ishasnextPage (); }/ ** *// ** * 페이지의 정보를 판단하기 위해 다음은 getter method (is method) * * @return */ public boolean isfirstpage () {return (currentPage == 1); // 현재 페이지가 첫 페이지 인 경우 {return currentPage == TotalPage; // 현재 페이지가 마지막 페이지 인 경우} public boolean ishaspreviousPage () {return currentPage! = 1; // 현재 페이지가 첫 페이지가 아닌 한} public boolean ishasnextPage () {return currentPage! = TotalPage; // 현재 페이지가 마지막 페이지가 아닌 한}/***//*** 클래스 이름** @param pagesize* @param allrow* @param allrow* 총 페이지*/public int counttotalpage (public int pageize, final int pageize) {int int introw) {int int int page size = alllow Allrow / Pagesize : Allrow / Pagesize + 1; 전체 페이지를 반환합니다. } / *** / / *** 현재 페이지의 시작 레코드를 계산* @param pagesize* 페이지 당 레코드 수* @param currentpage* 현재 페이지* @return current page start record* / public static int countoffset (최종 int pageize, 최종 int currentpage) {최종 int offset = pagesize* (currentpage -1); 오프셋 리턴; } /*** / /*** 현재 페이지를 계산합니다. 요청 된 URL에서 0이거나 "? page ="가없는 경우 1은 대신 * * @param page * 전달 된 매개 변수 (아마도 비어있을 수 있습니다. 즉, 0, 1이 반환됩니다) * @return 현재 페이지 */ public static int countcurrentpage (int page) {final int curpage = (page == 0? 1 페이지); 반환 저작물; }} DAO의 추상 인터페이스 기반에 메소드 추가 :
공개 목록 QueryForPage (최종 문자열 HQL, 최종 int 오프셋, 최종 int 길이); DAO의 구현 클래스의 구현 방법 Jianshedwdaoimpl public list queryforpage (최종 문자열 HQL, 최종 int 오프셋, 최종 int 길이) {list list = gethibernateTemplate (). executeFind (new HiberNateCallback () {public object doinHibernate (세션 세션) hibernateException, sqleclemection and sqlexcection = sqlexcection = 세션. 반환 목록; } 서비스 추상화 계층 인터페이스에 메소드 추가 jianshedwservice :
public pagebean queryforpage (int pagesize, int currentpage);
서비스 구현 클래스에서 메소드 구현 :
public pagebean queryforpage (int pagesize, int page) {final string hql = "jianshedwbean에서"; // query statement int allrow = this.basedao.getallrowcount (HQL); // Total Records int totalpage = pagebean.countTotalPage (pagesize, allrow); // 총 페이지 최종 int 오프셋 = pagebean.countOffset (pagesize, page); // 현재 페이지는 최종 int longth = pagesize 녹음을 시작합니다. // 페이지 당 레코드 수 마지막 int currentPage = pageBean.countCurrentPage (페이지); 목록 <Jianshedwbean> list = this.basedao.queryforpage (HQL, 오프셋, 길이); // "한 페이지"의 레코드 // 페이징 정보를 Bean PageBean에 저장 = new PageBean (); pagebean.setpagesize (pagesize); pagebean.setcurrentpage (currentpage); pagebean.setallrow (Allrow); pagebean.settotalpage (TotalPage); pagebean.setList (목록); pagebean.init (); Return PageBean; } View Layer 동작에서 Pagination 모델을 만듭니다
패키지 com.fishing.action.lcq; import com.fishing.common.bean.jianshedwbean; import com.fishing.common.bean.pagebean; import com.fishing.service.lcq.jianshedwservice; com.opensymphony.xwork2.actionSupport 가져 오기; @SuppressWarnings ( "Serial") 공개 클래스 getInfojsdwlistaction actionSupport {private int page; // 개인 PageBean Pagebean 페이지; // 분포 정보가 포함 된 Bean Private Jianshedwbean Jianshedwbean; // 비공개 PageBean 페이지; 개인 Jianshedwservice jianshedwservice; public int getPage () {반환 페이지; } public void setPage (int page) {this.page = page; } public pagebean getPageBean () {return pagebean; } public void setPageBean (pagebean pagebean) {this.pagebean = pagebean; } public jianshedwbean getjianshedwbean () {return jianshedwbean; } public void setjianshedwbean (jianshedwbean jianshedwbean) {this.jianshedwbean = jianshedwbean; } public jianshedwservice getjianshedwservice () {return jianshedwservice; } public void setjianshedwservice (jianshedwservice jianshedwservice) {this.jianshedwservice = jianshedwservice; } @override public string execute ()는 예외를 던집니다. {// Pageination의 PageBean, 매개 변수 pageize는 페이지 당 표시되는 레코드 수를 나타냅니다. 페이지는 현재 페이지입니다. 반환 성공; }} JSP에 페이지를 작성하십시오
<tr> <td> </td> <td> <s : if test = "%{pagebean.currentpage == 1}"> 홈 이전 페이지 </s : if> <s : else> <a href = "jiangguan/getjsdwinfos.action? page = 1"> home </a> <a href = "jiangguan/getjsdwinfos.action? page = <s : property value ="%{pagebean.currentpage-1} "/>"/> 이전 페이지 </a> </s : else> </td> <s : if test = "%{pagebean.currentpage! = pagebean.totalpage}"> href = "jiangguan/getjsdwinfos.action? page = <s : property value ="%{pagebean.currentpage+1} "/>"/> "> 다음 페이지 </a> <a href ="jiangguan/getjsdwinfos.action? <s = page = : patebbean.totalpage "/>"/> <s : else> 다음 pagelast page </s : else> </td> <td> </td> <td> <div align = "center"> page <s : property value = "pagebean.currentPage"/>/<s : "pagebean.totalpage"/> <s : property value = "pagebean.allrow"/> records </td> </td> </tr> 위의 것은 단지 코드의 구현 일 뿐이며 구성 파일을 설명하지 않으며, 리더는 상황에 따라이를 구성합니다.
이 기사가 도움이되기를 바랍니다. 데이터베이스 및 인터페이스의 SSH2 구현의 페이지 매김 내용을 소개하는 것이 전부입니다. 모두가 우리 웹 사이트를 계속 따르기를 바랍니다! Java를 배우고 싶다면이 웹 사이트를 계속 팔로우 할 수 있습니다.