溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

J2EE如何實(shí)現(xiàn)分頁

發(fā)布時(shí)間:2021-11-03 18:01:49 來源:億速云 閱讀:109 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“J2EE如何實(shí)現(xiàn)分頁”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“J2EE如何實(shí)現(xiàn)分頁”這篇文章吧。

先說明一下J2EE實(shí)現(xiàn)分頁所需要用到的文件Pager.java (不用說,肯定是保存分頁信息的了),PagerHelper.java(處理頁面信息) ,PageTag.java(自定義分頁標(biāo)簽),還有一個(gè)是pagetag.tld文件,分頁標(biāo)簽描述文件.

先帖出這四個(gè)文件的源碼

1、Pager.java

package org.awc.commns;   /**  * 保存分頁信息的類  *   * @author Administrator  *   */ public class Pager {  private int totalRows; // 總行數(shù)   private int pageSize; // 每頁顯示的行數(shù)   private int currentPage; // 當(dāng)前頁號   private int totalPages; // 總頁數(shù)   private int startRow; // 當(dāng)前頁在數(shù)據(jù)庫中的起始行   private String linkUrl; // 要跳轉(zhuǎn)的URL   public Pager() {  }   public Pager(int _totalRows,int _pageSize) {     totalRows = _totalRows;     pageSize = _pageSize;     totalPages = totalRows / pageSize;     int mod = totalRows % pageSize;     if (mod > 0) {      totalPages++;     }     currentPage = 1;     startRow = 0;  }   //此處略去屬性的getter和setter方法      /**  * 設(shè)定hibernate查詢的起始行數(shù)  *   * @param currentPage  */  public void setStart(int currentPage) {     this.currentPage = currentPage;     startRow = (currentPage - 1) * pageSize;  }  }

2、PagerHelper.java

import javax.servlet.http.*;   /**  * 控制分頁的類  *   * @author Administrator  *   */ public class PagerHelper {   public static Pager getPager(HttpServletRequest httpServletRequest,      int totalRows,int pageSize) {      // 定義pager對象,用于傳到頁面     Pager pager = new Pager(totalRows,pageSize);      // 從Request對象中獲取當(dāng)前頁號     String currentPage = httpServletRequest.getParameter("cpage");      // 如果當(dāng)前頁號為空,表示為***查詢該頁     // 如果不為空,則刷新pager對象,輸入當(dāng)前頁號等信息     if (currentPage != null) {      pager.setStart(Integer.parseInt(currentPage));     }     else {      pager.setStart(1);     }         return pager;  }  }

3、PageTag.java

import java.io.IOException;   import javax.servlet.jsp.JspWriter;  import javax.servlet.jsp.tagext.TagSupport;   public class PageTag extends TagSupport {  /**  *   */ private static final long serialVersionUID = 1L;   private Pager pager;   public int doStartTag() {     try {      JspWriter out = pageContext.getOut();       out.print("第 " + pager.getCurrentPage() + " 頁/共 "       + (pager.getTotalPages()) + " 頁");       if (pager.getCurrentPage() == 1) {       out.print("[最首頁]");       out.print("[上一頁]");      }      if (pager.getCurrentPage() != 1) {       out.print("[< a href='" + pager.getLinkUrl()         + "&cpage=1'>最首頁< /a>]");       out.print("[< a href='" + pager.getLinkUrl() + "&cpage="        + (pager.getCurrentPage() - 1) + "'>上一頁< /a>]");      }       for (int i = pager.getCurrentPage() - 3; i < = pager        .getCurrentPage() + 3; i++) {       if (i < = 0 || i > pager.getTotalPages()) {        continue;       }       if (i == pager.getCurrentPage()) {        out          .print("[< span style='color:#FF0000; border: 1px solid #cccccc; font-weight:bold; width:15px;text-align: center;'> "           + i + " < /span>]");       } else {        out.print("[< a href='" + pager.getLinkUrl() + "&cpage=" + i          + "'> " + i + " < /a>]");       }      }      if (pager.getCurrentPage() == pager.getTotalPages()        || pager.getTotalPages() == 0) {       out.print("[下一頁]");       out.print("[最末頁]");       }      if (pager.getCurrentPage() != pager.getTotalPages()        && pager.getTotalPages() != 0) {       out.print("[< a href='" + pager.getLinkUrl() + "&cpage="        + (pager.getCurrentPage() + 1) + "'>下一頁< /a>]");       out.print("[< a href='" + pager.getLinkUrl() + "&cpage="        + (pager.getTotalPages()) + "'>最末頁< /a>]");      }      out.flush();     } catch (IOException ex) {      ex.printStackTrace();     }     return super.SKIP_BODY;  }   public int doEndTag() {     return super.EVAL_PAGE;  }   public void setPager(Pager pager) {     this.pager = pager;  }   public Pager getPager() {     return pager;  }  }

4、pagetag.tld

< !DOCTYPE taglib  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"     "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> < taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"> < tlib-version>1.0< /tlib-version> < jsp-version>1.2< /jsp-version> < short-name>My Tags< /short-name> < tag>     < name>page< /name>     < tag-class>org.awc.commns.PageTag< /tag-class>< !-- PageTag.java具體項(xiàng)目路徑-->     < body-content>empty< /body-content>     < attribute>       < name>pager< /name>       < required>true< /required>       < rtexprvalue>true< /rtexprvalue>       < type>org.awc.commns.Pager< /type>< !-- Pager.java具體項(xiàng)目路徑-->     < /attribute> < /tag> < /taglib>

以上四個(gè)文件為固定,其余部分代碼示例如下:

Action或者Servlet部分:

public ActionForward display(ActionMapping mapping, ActionForm form,      HttpServletRequest request, HttpServletResponse response) {  //不相關(guān)代碼略去     int totalRows;// 記錄總行數(shù)     Pager pager = null; // 頁面信息     int pageSize = 15;     try {      totalRows = tservice.getTotalRowsBySubType(tsid); // 獲取指定主題總行數(shù)      pager = PagerHelper.getPager(request, totalRows, pageSize); // 初始化分頁對象      pager.setLinkUrl("index.asp?method=display&stid=" + tsid); // 設(shè)置跳轉(zhuǎn)路徑      request.setAttribute("pb", pager); // 將分頁信息保存在Request對象       topicList = tservice.findTopicByStid(tsid, pager); // 根據(jù)分頁信息查詢指定的主題      request.setAttribute("results", topicList);      return mapping.findForward("index");     } catch (Exception e) {      // TODO Auto-generated catch block      e.printStackTrace();     }     return mapping.findForward("fail");  }

JSP 頁面部分:

1、在頁面開始部分導(dǎo)入標(biāo)簽庫文件 :< %@ taglib prefix="page" uri="WEB-INF/pageTld/pagetag.tld"%> --具體路徑視具體項(xiàng)目而定

2、在需要加入分頁信息的部分加上< page:page pager="${pb}" /> 即可。

以上是“J2EE如何實(shí)現(xiàn)分頁”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI