您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“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è)資訊頻道!
免責(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)容。