매일 새로운 것을 배우는 것을 생각하면서 오늘 나는이 최대 절전 모드+struts2를 준비하여 페이지 페이징 기능을 구현했습니다. 다음은 소스 코드입니다.
1. DAO 레이어 인터페이스의 설계, Persondao 인터페이스 정의 및 두 가지 방법을 선언합니다.
public interface persondao {public list <person> querybypage (문자열 HQL, int 오프셋, int pagesize); public int getallrowcount (String HQL);}2. DAO 계층 인터페이스의 구현은 persondaoimpl 클래스이며 두 가지 방법이 구현됩니다.
공개 클래스 persondaoimpl은 persondao { / *** HQL 문을 통해 데이터베이스에서 총 레코드 수를 얻습니다. 트랜잭션 tx = null; int allrows = 0; try {tx = session.begintransaction (); query query = session.createquery (HQL); allrows = query.list (). size (); tx.commit (); } catch (예외 e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } 마침내 {hibernateutil.closesession (세션); } 반환 알레를 반환합니다. } / *** hibernate가 제공하는 페이징 함수를 사용하여 Pagination* / @suppresswarnings ( "선택 취소") @override public list <person> querybypage (String HQL, int Offset, Int Pagesize) {세션 세션 = hibernateUtil.opensession (); 트랜잭션 tx = null; 목록 <person> list = null; try {tx = session.begintransaction (); query query = session.createquery (HQL) .SetFirStresult (오프셋) .SetMaxResults (pagesize); list = query.list (); tx.commit (); } catch (예외 e) {if (tx! = null) {tx.rollback (); } e.printstacktrace (); } 마침내 {hibernateutil.closesession (세션); } 반환 목록; }}.
공개 클래스 PageBean {private list <person> 목록; // 데이터베이스 페이징에서 HQL Private int allrows를 통해 수집 쿼리 목록; // 총 레코드 개인 int TotalPage; // 총 페이지 프라이빗 int currentPage; // 현재 페이지 공개 목록 <person> getList () {return list; } public void setlist (list <person> list) {this.list = list; } public int getAllrows () {return allrows; } public void setallrows (int allrows) {this.allrows = allrows; } 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; } / *** 총 페이지 수를 얻으십시오* @param pages 페이지 당 레코드 수를 선택하십시오. (Allrows / Pagesize) : (Allrows / Pagesize) + 1; 전체 페이지를 반환합니다. } / *** 현재 시작 레코드 번호 가져 오기* @param pages 페이지 당 레코드 수를 확인하십시오* @param currentpage current page* @return* / public int getCurrentPageOffset (int pagesize, int currentPage) {int offset = pagesize* (currentPage -1); 오프셋 리턴; } / ** * 현재 페이지를 가져 오십시오. 0 인 경우 첫 페이지가 시작됩니다. 첫 페이지가 시작됩니다. 그렇지 않으면 현재 페이지 * @param 페이지 * @return * / public int getCurpage (int page) {int currentPage = (page == 0)? 1 : 페이지; CurrentPage를 반환합니다. }}4. 서비스 계층 인터페이스 디자인, PersonService 인터페이스 정의, 메소드 선언 및 PageBean을 반환합니다.
공개 인터페이스 personservice {public pagebean getpagebean (int pagesize, int page);}5. 서비스 계층 인터페이스는 personserviceimpl 클래스를 구현하여 유일한 방법을 구현합니다.
공개 클래스 personserviceimpl은 personservice를 구현합니다. / *** pageize는 페이지 당 표시되는 레코드 수입니다.* 페이지는 현재 표시된 웹 페이지*/ @override public pagebean getPageBean (int pageize, int page) {pagebean pagebean = new pagebean (); 문자열 HQL = "사람에서"; int allrows = persondao.getallrowcount (HQL); int totalpage = pagebean.getTotalPages (pagesize, allrows); int currentpage = pagebean.getCurpage (페이지); int offset = pagebean.getCurrentPageOffset (pagesize, currentPage); list <person> list = persondao.querybypage (HQL, 오프셋, pagesize); pagebean.setList (목록); pagebean.setallrows (allrows); pagebean.setcurrentpage (currentpage); pagebean.settotalpage (TotalPage); Return PageBean; }}6. 액션 레이어 설계, 인물 정의 :
공공 계급 인물은 ActionSupport 확장 {private personservice personservice = new personserviceimpl (); 개인 int 페이지; public int getPage () {반환 페이지; } public void setPage (int page) {this.page = page; } @override public string execute () throws Exception {// 5 개의 레코드가 페이지 당 5 개의 레코드가 표시됨을 의미합니다. httpservletrequest 요청 = servletactionContext.getRequest (); request.setattribute ( "pagebean", pagebean); 반환 성공; }}7. 보조 디자인, 최대 절차체 :
공개 클래스 hibernateutil {private static sessionfactory sessionfactory; static {sessionFactory = new configuration (). configure (). buildSessionFactory (); } public static session opensession () {세션 세션 = sessionfactory.opensession (); 반환 세션; } public static void closesession (세션 세션) {if (session! = null) {session.close (); }}}8. 마지막으로 PagePerson.jsp 페이지가 Pagination 페이지에 표시됩니다.
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib prefix = "s"uri = "/struts-tags"%> <html> <head> <base href = "<%= basepath%>"> <title> 내 jsp 'pageperson. http-equiv = "pragma"content = "no-cache"> <meta http-equiv = "cache-control"content = "no-cache"> <meta http-equiv = "xpires"content = "0"> <meta http-equiv = "keywords"content = "keyword2, keyword2, keyword3"> content = "이것은 내 페이지입니다"> <script type = "text/javaScript"> function validate () {var page = document.getElementsByName ( "page") [0] .Value; if (page> <s : 속성 값 = "#request.pagebean.totalpage"/>) {alert ( "입력하는 페이지 수는 최대 페이지 수보다 높고 페이지가 홈페이지로 이동합니다!"); Window.document.location.href = "인원"; 거짓을 반환합니다. } true를 반환합니다. }. id = "person"> <tr> <th> <s : 속성 값 = "#person.id"/> </th> <th> <s : 속성 값 = "#person.age"/> </th> </tr> </s : iterator> </table> <center> <font size = "5"> font color = "red"> pages </font> <font size = "5"> Total <font color = "red"> <s : property value = "#request.pagebean.allrows"/> </font> records </font> <br> <s : if test = "#request.pageBean.currentPage == 1"> 이전 페이지 </s : if <s : el : if> <s : if> href = "personaction.action"> home </a> <a href = "personaction.action? Accip? page = <s : property value ="#request.pagebean.currentPage -1 "/>"> 이전 페이지 </a> <s : else> <s : if test = "#request.pagebean.currentpagebean.currentpage! href = "personaction.action? page = <s : property value ="#request.pagebean.currentpage + 1 "/>"> 다음 페이지 </a> <a href = "personaction.action? page = <s :"#request.pagebean.totalpage "/>"> 마지막 페이지 </a> </s : if> else> else> <s. </center> <br> <center> <form action = "personaction"onsubmit = "return validate ();"> <font size = "4"> </font> <input type = "text"size = "2"name = "page"> page <input type = "value ="jump "> </form> </body> </html> </html>이 시점에서 Hibernate+Struts2의 웹 페이지 페이징 기능 구현의 코드 부분이 완료됩니다. 최대 절전 모드 및 스트럿의 구성 파일은 나열되지 않으며 핵심 포인트가 아닙니다!
페이지 효과는 다음과 같습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.