自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

J2EE實(shí)現(xiàn)分頁(yè):Hibernate自定義標(biāo)簽

開(kāi)發(fā) 后端
本文通過(guò)例子講述了通用的分頁(yè)標(biāo)簽實(shí)現(xiàn)。相信所有人都會(huì)覺(jué)得J2EE實(shí)現(xiàn)分頁(yè)相對(duì)于ASP.NET中處理分頁(yè)實(shí)在是一件很痛苦的事,本文代碼通過(guò)四個(gè)文件,一個(gè)action或Servlet,完成了在JSP頁(yè)面上的分頁(yè)。

關(guān)于分頁(yè),網(wǎng)上看了很多文章,相信所有人都會(huì)覺(jué)得J2EE中實(shí)現(xiàn)分頁(yè)相對(duì)于ASP.NET中處理分頁(yè)實(shí)在是一件很痛苦的事..

下面就結(jié)合我做的例子說(shuō)明一下通用的分頁(yè)標(biāo)簽實(shí)現(xiàn).

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

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

1、Pager.java

  1. package org.awc.commns;  
  2.  
  3. /**  
  4. * 保存分頁(yè)信息的類(lèi)  
  5.  
  6. * @author Administrator  
  7.  
  8. */ 
  9. public class Pager {  
  10. private int totalRows; // 總行數(shù)  
  11.  
  12. private int pageSize; // 每頁(yè)顯示的行數(shù)  
  13.  
  14. private int currentPage; // 當(dāng)前頁(yè)號(hào)  
  15.  
  16. private int totalPages; // 總頁(yè)數(shù)  
  17.  
  18. private int startRow; // 當(dāng)前頁(yè)在數(shù)據(jù)庫(kù)中的起始行  
  19.  
  20. private String linkUrl; // 要跳轉(zhuǎn)的URL  
  21.  
  22. public Pager() {  
  23. }  
  24.  
  25. public Pager(int _totalRows,int _pageSize) {  
  26.    totalRows = _totalRows;  
  27.    pageSize = _pageSize;  
  28.    totalPages = totalRows / pageSize;  
  29.    int mod = totalRows % pageSize;  
  30.    if (mod > 0) {  
  31.     totalPages++;  
  32.    }  
  33.    currentPage = 1;  
  34.    startRow = 0;  
  35. }  
  36.  
  37. //此處略去屬性的getter和setter方法  
  38.  
  39.    /**  
  40. * 設(shè)定hibernate查詢的起始行數(shù)  
  41.  
  42. * @param currentPage  
  43. */ 
  44.  
  45. public void setStart(int currentPage) {  
  46.    this.currentPage = currentPage;  
  47.    startRow = (currentPage - 1) * pageSize;  
  48. }  
  49. }  

2、PagerHelper.java

  1. import javax.servlet.http.*;  
  2.  
  3. /**  
  4. * 控制分頁(yè)的類(lèi)  
  5.  
  6. * @author Administrator  
  7.  
  8. */ 
  9. public class PagerHelper {  
  10.  
  11. public static Pager getPager(HttpServletRequest httpServletRequest,  
  12.     int totalRows,int pageSize) {  
  13.  
  14.    // 定義pager對(duì)象,用于傳到頁(yè)面  
  15.    Pager pager = new Pager(totalRows,pageSize);  
  16.  
  17.    // 從Request對(duì)象中獲取當(dāng)前頁(yè)號(hào)  
  18.    String currentPage = httpServletRequest.getParameter("cpage");  
  19.  
  20.    // 如果當(dāng)前頁(yè)號(hào)為空,表示為***查詢?cè)擁?yè)  
  21.    // 如果不為空,則刷新pager對(duì)象,輸入當(dāng)前頁(yè)號(hào)等信息  
  22.    if (currentPage != null) {  
  23.     pager.setStart(Integer.parseInt(currentPage));  
  24.    }  
  25.    else {  
  26.     pager.setStart(1);  
  27.    }  
  28.     
  29.    return pager;  
  30. }  
  31. }  

3、PageTag.java

  1. import java.io.IOException;  
  2.  
  3. import javax.servlet.jsp.JspWriter;  
  4. import javax.servlet.jsp.tagext.TagSupport;  
  5.  
  6. public class PageTag extends TagSupport {  
  7. /**  
  8.  
  9. */ 
  10. private static final long serialVersionUID = 1L;  
  11.  
  12. private Pager pager;  
  13.  
  14. public int doStartTag() {  
  15.    try {  
  16.     JspWriter out = pageContext.getOut();  
  17.  
  18.     out.print("第 " + pager.getCurrentPage() + " 頁(yè)/共 " 
  19.       + (pager.getTotalPages()) + " 頁(yè)");  
  20.  
  21.     if (pager.getCurrentPage() == 1) {  
  22.      out.print("[最首頁(yè)]");  
  23.      out.print("[上一頁(yè)]");  
  24.     }  
  25.     if (pager.getCurrentPage() != 1) {  
  26.      out.print("[< a href='" + pager.getLinkUrl()  
  27.        + "&cpage=1'>最首頁(yè)< /a>]");  
  28.      out.print("[< a href='" + pager.getLinkUrl() + "&cpage=" 
  29.        + (pager.getCurrentPage() - 1) + "'>上一頁(yè)< /a>]");  
  30.     }  
  31.  
  32.     for (int i = pager.getCurrentPage() - 3; i < = pager  
  33.       .getCurrentPage() + 3; i++) {  
  34.      if (i < = 0 || i > pager.getTotalPages()) {  
  35.       continue;  
  36.      }  
  37.      if (i == pager.getCurrentPage()) {  
  38.       out  
  39.         .print("[< span style='color:#FF0000; border: 1px solid #cccccc; font-weight:bold; width:15px;text-align: center;'> " 
  40.           + i + " < /span>]");  
  41.      } else {  
  42.       out.print("[< a href='" + pager.getLinkUrl() + "&cpage=" + i  
  43.         + "'> " + i + " < /a>]");  
  44.      }  
  45.     }  
  46.     if (pager.getCurrentPage() == pager.getTotalPages()  
  47.       || pager.getTotalPages() == 0) {  
  48.      out.print("[下一頁(yè)]");  
  49.      out.print("[最末頁(yè)]");  
  50.  
  51.     }  
  52.     if (pager.getCurrentPage() != pager.getTotalPages()  
  53.       && pager.getTotalPages() != 0) {  
  54.      out.print("[< a href='" + pager.getLinkUrl() + "&cpage=" 
  55.        + (pager.getCurrentPage() + 1) + "'>下一頁(yè)< /a>]");  
  56.      out.print("[< a href='" + pager.getLinkUrl() + "&cpage=" 
  57.        + (pager.getTotalPages()) + "'>最末頁(yè)< /a>]");  
  58.     }  
  59.     out.flush();  
  60.    } catch (IOException ex) {  
  61.     ex.printStackTrace();  
  62.    }  
  63.    return super.SKIP_BODY;  
  64. }  
  65.  
  66. public int doEndTag() {  
  67.    return super.EVAL_PAGE;  
  68. }  
  69.  
  70. public void setPager(Pager pager) {  
  71.    this.pager = pager;  
  72. }  
  73.  
  74. public Pager getPager() {  
  75.    return pager;  
  76. }  
  77. }  

4、pagetag.tld

  1. < !DOCTYPE taglib  
  2. PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  
  3.    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> 
  4. < taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"> 
  5. < tlib-version>1.0< /tlib-version> 
  6. < jsp-version>1.2< /jsp-version> 
  7. < short-name>My Tags< /short-name> 
  8. < tag> 
  9.     < name>page< /name> 
  10.     < tag-class>org.awc.commns.PageTag< /tag-class>< !-- PageTag.java具體項(xiàng)目路徑--> 
  11.     < body-content>empty< /body-content> 
  12.     < attribute> 
  13.       < name>pager< /name> 
  14.       < required>true< /required> 
  15.       < rtexprvalue>true< /rtexprvalue> 
  16.       < type>org.awc.commns.Pager< /type>< !-- Pager.java具體項(xiàng)目路徑--> 
  17.     < /attribute> 
  18. < /tag> 
  19. < /taglib> 

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

Action或者Servlet部分:

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

JSP 頁(yè)面部分:

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

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

這樣就在J2EE中實(shí)現(xiàn)了分頁(yè)功能。

【編輯推薦】

  1. Hibernate中使用Criteria查詢實(shí)例
  2. Hibernate中使用DetchedCriteria
  3. Hibernate之Criteria進(jìn)階查詢
  4. Hibernate之Criteria基本查詢
  5. Criteria查詢語(yǔ)句的補(bǔ)充:高級(jí)特性
責(zé)任編輯:book05 來(lái)源: 百度博客
相關(guān)推薦

2009-06-16 13:27:59

Hibernate x

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計(jì)模式

2009-06-16 11:14:00

Hibernate+SJ2EE應(yīng)用開(kāi)發(fā)

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2009-06-23 16:48:26

J2EE常見(jiàn)問(wèn)題J2EE平臺(tái)

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2009-06-22 16:21:02

J2EE線程

2009-06-18 16:13:14

J2EE開(kāi)發(fā)

2009-06-18 15:54:57

J2EE下使用JNDI

2009-06-23 08:12:48

J2EE調(diào)用存儲(chǔ)過(guò)程

2009-06-22 17:34:40

J2EE架構(gòu)

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2009-06-23 16:50:24

2009-06-23 16:52:55

J2EE縮寫(xiě)名詞

2009-06-25 13:22:00

J2EE常用Jar包

2009-06-10 13:30:32

J2EE四層模型客戶層Web層

2009-06-08 21:34:09

J2EEJ2SEJ2ME

2013-05-28 11:29:19

struts2
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)