生活随笔
收集整理的這篇文章主要介紹了
详解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?{ ???????????? ?????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)方法,以及實(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); ????????? ?????public?PageModel?findAllAlarm(int?offset,?int?pagesize);? ???} ? ③實(shí)現(xiàn)接口中方法:AlarmDaoImpl.java
public?PageModel?findAllAlarm(int?offset,?int?pagesize)?{ ????? ???????????????????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其實(shí)現(xiàn):AlarmManagerImpl.java
?
public?PageModel?findAllAlarm(int?offset,?int?pagesize)?{ ??????????????????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ò),歡迎將生活随笔推薦給好友。