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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

一.?pager-taglib-2.0簡(jiǎn)介預(yù)覽.

pager-taglib-2.0支持多種風(fēng)格的分頁(yè),打開(kāi)其源碼,可以看到,處理標(biāo)簽的類為:

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

Simple:

Text Icon:

JSPTags.com :

AllTheWeb :

AltaVista :

?Google :

Lycos :

Yahoo! :

二.使用pager-taglib

將下載的壓縮包解壓后:將下列文件對(duì)應(yīng)于我們項(xiàng)目中的文件.

?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; ?
  • ????/** ?
  • ?????*?當(dāng)前頁(yè)的記錄集 ?
  • ?????*?*/?
  • ????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)方法,以及實(shí)現(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??從第幾條記錄開(kāi)始查詢?? ?
  • ?????*?@param?pagesize??每頁(yè)顯示多少條記錄?? ?
  • ?????*?@return?? ?
  • ?????*/?? ?
  • ????public?PageModel?findAllAlarm(int?offset,?int?pagesize);? ?
  • ?
  • ?
  • } ?
  • ③實(shí)現(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();??? ?
  • ????????//得到結(jié)果集??? ?
  • ????????PageModel?pm?=?new?PageModel();??? ?
  • ????????pm.setTotal(total);??? ?
  • ????????pm.setDatas(datas);??? ?
  • ????????return?pm;??? ?
  • ?
  • ????}?
  • ④.Services層:public PageModel findAllAlarm(int offset, int pagesize);

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

    ?

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

    ?

  • 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測(cè)試頁(yè)面:page.jsp

    注意導(dǎo)入:

    JSTL標(biāo)簽:

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

    <%@ 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>測(cè)試?分頁(yè)</title>? ?
  • ????</head>? ?
  • ????? ?
  • ????<body>? ?
  • ????????<h1>測(cè)試?分頁(yè)</h1>? ?
  • ????????<hr/>? ?
  • ????????? ?
  • ????????<table?width="778"?border="0"?cellPadding="0"?cellSpacing="1"?bgcolor="#6386d6">? ?
  • ????????<tr?bgcolor="#EFF3F7">? ?
  • ??????????<TD?align="center">ID</TD>? ?
  • ??????????<TD?align="center">內(nèi)容</TD>? ?
  • ??????????<TD?align="center">時(shí)間</TD>? ?
  • ??????????<TD?align="center">相關(guān)操作</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">? ?
  • ????????????沒(méi)有找到相應(yīng)的記錄? ?
  • ????????????</td>? ?
  • ?????????</tr>? ?
  • ?????????</c:if>? ?
  • ????????</table>? ?
  • ????????<pg:pager?url="pagerTaglib!pagerTaglib"?items="${pm.total}"?export="currentPageNumber=pageNumber" maxPageItems="3">? ?
  • ??<pg:first>? ?
  • ????<a?href="${pageUrl}">首頁(yè)</a>? ?
  • ??</pg:first>? ?
  • ??<pg:prev>? ?
  • ????<a?href="${pageUrl?}">上一頁(yè)</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?}">下一頁(yè)</a>? ?
  • ??</pg:next>? ?
  • ??<pg:last>? ?
  • ????<a?href="${pageUrl?}">尾頁(yè)</a>? ?
  • ??</pg:last>? ?
  • </pg:pager>? ?
  • ????</body>? ?
  • </html>? ?
  • pager-taglib標(biāo)簽庫(kù)使用:

    ?

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

    ?

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

    六.結(jié)果如圖:

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

    七.換成google分頁(yè):關(guān)于各種分頁(yè)頁(yè)面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ìn)行分頁(yè)就已經(jīng)完成了!下面上傳了文件及Demo.

    項(xiàng)目源程序如下,可以直接導(dǎo)入Myeclipse8.6

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

    轉(zhuǎn)載于:https://blog.51cto.com/enetq/622946

    總結(jié)

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

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