日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

详解pager-taglib-2.0配合SSH分页

發(fā)布時間:2025/3/8 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解pager-taglib-2.0配合SSH分页 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一.?pager-taglib-2.0簡介預覽.

pager-taglib-2.0支持多種風格的分頁,打開其源碼,可以看到,處理標簽的類為:

PagerTag,有興趣的同學可以研究下源碼。

Simple:

Text Icon:

JSPTags.com :

AllTheWeb :

AltaVista :

?Google :

Lycos :

Yahoo! :

二.使用pager-taglib

將下載的壓縮包解壓后:將下列文件對應于我們項目中的文件.

?WEB-INF/lib/
pager-taglib.jar

??? WEB-INF/jsp/
pager-taglib.tld
alltheweb.jsp
altavista.jsp
google.jsp
jsptags.jsp
lycos.jsp
simple.jsp
texticon.jsp
yahoo.jsp

??? p_w_picpaths/
??????? jsptags.gif
三.新建PageModel類以及修改DAO接口

①PageModel.java

  • import?java.util.List; ?
  • ?
  • public?class?PageModel?{ ?
  • ????/** ?
  • ?????*?總記錄數(shù) ?
  • ?????*?*/?
  • ???? ?
  • ????private?int?total; ?
  • ????/** ?
  • ?????*?當前頁的記錄集 ?
  • ?????*?*/?
  • ????private?List?datas; ?
  • ????public?int?getTotal()?{ ?
  • ????????return?total; ?
  • ????} ?
  • ????public?void?setTotal(int?total)?{ ?
  • ????????this.total?=?total; ?
  • ????} ?
  • ????public?List?getDatas()?{ ?
  • ????????return?datas; ?
  • ????} ?
  • ????public?void?setDatas(List?datas)?{ ?
  • ????????this.datas?=?datas; ?
  • ????} ?
  • ???? ?
  • ?
  • } ?
  • ②修改DAO,增加public PageModel findAllAlarm(int offset, int pagesize)方法,以及實現(xiàn)類. AlarmDao.java

  • public?interface?AlarmDao?{ ?
  • ?public?void?add(Alarm?alarm); ?
  • ?
  • ?public?Alarm?getAlarm(Integer?id); ?
  • ?
  • ?public?List?getAlarmList(); ?
  • ?
  • ?public?void?update(Alarm?alarm); ?
  • ?
  • ?public?void?delete(Integer?id); ?
  • ?/**?? ?
  • ?????*??? ?
  • ?????*?@param?offset??從第幾條記錄開始查詢?? ?
  • ?????*?@param?pagesize??每頁顯示多少條記錄?? ?
  • ?????*?@return?? ?
  • ?????*/?? ?
  • ????public?PageModel?findAllAlarm(int?offset,?int?pagesize);? ?
  • ?
  • ?
  • } ?
  • ③實現(xiàn)接口中方法:AlarmDaoImpl.java

  • public?PageModel?findAllAlarm(int?offset,?int?pagesize)?{ ?
  • ???? ?
  • ?????????//得到總記錄數(shù)??? ?
  • ????????String?queryCountHql?=?"select?count(*)?from?Alarm";??? ?
  • ??????????? ?
  • ????????Query?query?=?getSession().createQuery(queryCountHql);??? ?
  • ????????int?total?=?((Long)query.uniqueResult()).intValue();??? ?
  • ??????????? ?
  • ????????List?datas?=?getSession().createQuery("from?Alarm")??? ?
  • ????????????????????.setFirstResult(offset)??? ?
  • ????????????????????.setMaxResults(pagesize)??? ?
  • ????????????????????.list();??? ?
  • ????????//得到結果集??? ?
  • ????????PageModel?pm?=?new?PageModel();??? ?
  • ????????pm.setTotal(total);??? ?
  • ????????pm.setDatas(datas);??? ?
  • ????????return?pm;??? ?
  • ?
  • ????}?
  • ④.Services層:public PageModel findAllAlarm(int offset, int pagesize);

    ⑤Services其實現(xiàn):AlarmManagerImpl.java

    ?

  • public?PageModel?findAllAlarm(int?offset,?int?pagesize)?{ ?
  • ????????//?TODO?Auto-generated?method?stub ?
  • ????????return?alarmDao.findAllAlarm(offset,?pagesize); ?
  • ????}?
  • 四.修改Action,增加分頁方法!

    ?

  • public?String?pagerTaglib() ?
  • ?????{ ?
  • ??????int?pagesize=3; ?
  • ??????int?offset=0; ?
  • ??????HttpServletRequest?request?=?ServletActionContext.getRequest();? ?
  • ??????if(request.getParameter("pager.offset")!=null) ?
  • ???????offset=Integer.parseInt(request.getParameter("pager.offset")); ?
  • ?????? ?
  • ??????PageModel?pm=alarmManager.findAllAlarm(offset,?pagesize); ?
  • ??????request.setAttribute("pm",?pm); ?
  • ??????return?"pagertaglib"; ?
  • ?????}?
  • 修改struts.xml文件

    ?

  • <action?name="pagerTaglib"?class="addBean"?method="pagerTaglib">?
  • ???<result?name="success">/list.jsp</result>?
  • ???<result?name="pagertaglib">/page.jsp</result>?
  • ?</action>?
  • 五.建立JSP測試頁面:page.jsp

    注意導入:

    JSTL標簽:

    <%@ taglib prefix="c"??? uri="http://java.sun.com/jsp/jstl/core" %>?
    pagertaglib標簽:

    <%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>

  • <%@?page?language="java"?import="java.util.*"?pageEncoding="utf-8"%>? ?
  • <%@?taglib?prefix="c"????uri="http://java.sun.com/jsp/jstl/core"?%>? ?
  • <%@?taglib?prefix="pg"?uri="http://jsptags.com/tags/navigation/pager"?%>? ?
  • ?
  • ?
  • <!DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN">? ?
  • <html>? ?
  • ????<head>? ?
  • ????????<title>測試?分頁</title>? ?
  • ????</head>? ?
  • ????? ?
  • ????<body>? ?
  • ????????<h1>測試?分頁</h1>? ?
  • ????????<hr/>? ?
  • ????????? ?
  • ????????<table?width="778"?border="0"?cellPadding="0"?cellSpacing="1"?bgcolor="#6386d6">? ?
  • ????????<tr?bgcolor="#EFF3F7">? ?
  • ??????????<TD?align="center">ID</TD>? ?
  • ??????????<TD?align="center">內容</TD>? ?
  • ??????????<TD?align="center">時間</TD>? ?
  • ??????????<TD?align="center">相關操作</TD>? ?
  • ???????????? ?
  • ????????</tr>? ?
  • ????????<c:if?test="${!empty?pm.datas}">? ?
  • ??????????<c:forEach?items="${pm.datas}"?var="alarm">? ?
  • ????????????<tr?bgcolor="#EFF3F7">? ?
  • ??????????????<td?align="center">${alarm.wid?}</td>? ?
  • ??????????????<td?align="center">${alarm.wcontent?}</td>? ?
  • ??????????????<td?align="center">${alarm.wtime}</td>? ?
  • ??????????????<td?align="center">? ?
  • ????????????????修改? ?
  • ????????????????????? ?
  • ????????????????刪除</td>? ?
  • ????????????</tr>? ?
  • ??????????</c:forEach>? ?
  • ??????????</c:if>? ?
  • ????????????<c:if?test="${empty?pm.datas}">? ?
  • ?????????<tr>? ?
  • ????????????<td?colspan="5"?align="center"?bgcolor="#EFF3F7">? ?
  • ????????????沒有找到相應的記錄? ?
  • ????????????</td>? ?
  • ?????????</tr>? ?
  • ?????????</c:if>? ?
  • ????????</table>? ?
  • ????????<pg:pager?url="pagerTaglib!pagerTaglib"?items="${pm.total}"?export="currentPageNumber=pageNumber" maxPageItems="3">? ?
  • ??<pg:first>? ?
  • ????<a?href="${pageUrl}">首頁</a>? ?
  • ??</pg:first>? ?
  • ??<pg:prev>? ?
  • ????<a?href="${pageUrl?}">上一頁</a>? ?
  • ??</pg:prev>? ?
  • ??<pg:pages>? ?
  • ????<c:choose>? ?
  • ??????<c:when?test="${currentPageNumber?eq?pageNumber}">? ?
  • ????????<font?color="red">${pageNumber?}</font>? ?
  • ??????</c:when>? ?
  • ??????<c:otherwise>? ?
  • ????????<a?href="${pageUrl?}">${pageNumber?}</a>? ?
  • ??????</c:otherwise>? ?
  • ????</c:choose>? ?
  • ??</pg:pages>? ?
  • ??<pg:next>? ?
  • ????<a?href="${pageUrl?}">下一頁</a>? ?
  • ??</pg:next>? ?
  • ??<pg:last>? ?
  • ????<a?href="${pageUrl?}">尾頁</a>? ?
  • ??</pg:last>? ?
  • </pg:pager>? ?
  • ????</body>? ?
  • </html>? ?
  • pager-taglib標簽庫使用:

    ?

    標簽名:簡介:參數(shù)說明:
    pg:pager設置分頁的總體參數(shù)url:分頁的鏈接根地址,pager標簽會在這個鏈接的基礎上附加分頁參數(shù)
    ?items:總記錄數(shù),pager標簽正是根據(jù)這個值來計算分頁參數(shù)的
    ?maxPageItems:每頁顯示的行數(shù),默認為10(不寫此標簽,你會發(fā)現(xiàn)分頁的條數(shù)在小于10的時候顯示不出來一些數(shù)據(jù)。當大于10的時候則會出現(xiàn)重復的記錄!)
    ?maxIndexPages:在循環(huán)輸出頁碼的時候,最大輸出多少個頁碼,默認是10
    ?
    pg:first第一頁的標簽export變量的意義:
    ?pageUrl - 分頁鏈接URL地址(最重要的export參數(shù))
    ?pageNumber - 頁碼
    ?firstItem - 首頁第一行的索引值
    ?lastItem - 首頁最后一行的索引值
    ?
    pg:pre上一頁標簽export變量的意義:
    ?pageUrl - 分頁鏈接URL地址(最重要的export參數(shù))
    ?pageNumber - 頁碼
    ?firstItem - 前頁第一行的索引值
    ?lastItem - 前頁最后一行的索引值
    pg:next下一頁標簽export變量的意義:
    ?pageUrl - 分頁鏈接URL地址(最重要的export參數(shù))
    ?pageNumber - 頁碼
    ?firstItem - 下頁第一行的索引值
    ?lastItem - 下頁最后一行的索引值
    ?
    pg:last最后一頁?export變量的意義:
    ?pageUrl - 分頁鏈接URL地址(最重要的export參數(shù))
    ?pageNumber - 頁碼
    ?firstItem - 尾頁第一行的索引值
    ?lastItem - 尾頁最后一行的索引值
    ?

    ?

    pg:pages循環(huán)輸出頁碼信息export變量的意義:
    ?pageUrl - 分頁鏈接URL地址(最重要的export參數(shù))
    ?pageNumber - 頁碼
    ?firstItem - pageNumber這個頁碼指定的那一頁的第一行的索引值
    ?lastItem - pageNumber這個頁碼指定的那一頁的最后一行的索引值

    六.結果如圖:

    頁面有點難看,這些數(shù)據(jù)是PowerDesigner生成的測試數(shù)據(jù),很難看,呵呵。

    七.換成google分頁:關于各種分頁頁面JSP代碼,下載的資料里面包含的有使用文檔!替換即可!

  • ?<pg:pager?url="pagerTaglib!pagerTaglib"?items="${pm.total}"??index="half-full"?export="currentPageNumber=pageNumber"?maxPageItems="3">?
  • ?
  • <pg:index>?
  • ??<center>?
  • ??<table?border=0?cellpadding=0?width=10%?cellspacing=0>?
  • ??<tr?align=center?valign=top>?
  • ??<td?valign=bottom><font?face=arial,sans-serif ?
  • ????size=-1>Result?Page:?</font></td>?
  • ??<pg:prev?ifnull="true">?
  • ????<%?if?(pageUrl?!=?null)?{?%>?
  • ??????<td?align=right><A?HREF="<%=?pageUrl?%>"><IMG?
  • ????????SRC=http://www.google.com/nav_previous.gif?alt=""?border=0><br>?
  • ??????<b>Previous</b></A></td>?
  • ????<%?}?else?{?%>?
  • ??????<td><IMG?SRC=http://www.google.com/nav_first.gif?alt=""?border=0></td>?
  • ????<%?}?%>?
  • ??</pg:prev>?
  • ??<pg:pages>?
  • ????<%?if?(pageNumber?==?currentPageNumber)?{?%>?
  • ??????<td><IMG?SRC=http://www.google.com/nav_current.gif?alt=""><br>?
  • ??????<font?color=#A90A08><%=?pageNumber?%></font></td>?
  • ????<%?}?else?{?%>?
  • ??????<td><A?HREF="<%=?pageUrl?%>"><IMG?
  • ????????SRC=http://www.google.com/nav_page.gif?alt=""?border=0><br>?
  • ??????<%=?pageNumber?%></A></td>?
  • ????<%?}?%>?
  • ??</pg:pages>?
  • ??<pg:next?ifnull="true">?
  • ????<%?if?(pageUrl?!=?null)?{?%>?
  • ??????<td><A?HREF="<%=?pageUrl?%>"><IMG?
  • ????????SRC=http://www.google.com/nav_next.gif?alt=""?border=0><br>?
  • ??????<b>Next</b></A></td>?
  • ????<%?}?else?{?%>?
  • ??????<td><IMG?SRC=http://www.google.com/nav_last.gif?alt=""?border=0></td>?
  • ????<%?}?%>?
  • ??</pg:next>?
  • ??</tr>?
  • ??</table>?
  • ??</center>?
  • </pg:index>?
  • pg:pager>?
  • ?圖示:

    至此使用pager-taglib-2.0進行分頁就已經(jīng)完成了!下面上傳了文件及Demo.

    項目源程序如下,可以直接導入Myeclipse8.6

    http://down.51cto.com/data/347159

    轉載于:https://blog.51cto.com/enetq/622946

    總結

    以上是生活随笔為你收集整理的详解pager-taglib-2.0配合SSH分页的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。