生活随笔
收集整理的這篇文章主要介紹了
详解pager-taglib-2.0配合SSH分页
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.?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?{ ???????????? ?????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)方法,以及實現類. 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);? ???} ? ③實現接口中方法: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其實現:AlarmManagerImpl.java
?
public?PageModel?findAllAlarm(int?offset,?int?pagesize)?{ ??????????????????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標簽庫使用:
?
| 標簽名: | 簡介: | 參數說明: |
| pg:pager | 設置分頁的總體參數 | url:分頁的鏈接根地址,pager標簽會在這個鏈接的基礎上附加分頁參數 ?items:總記錄數,pager標簽正是根據這個值來計算分頁參數的 ?maxPageItems:每頁顯示的行數,默認為10(不寫此標簽,你會發現分頁的條數在小于10的時候顯示不出來一些數據。當大于10的時候則會出現重復的記錄!) ?maxIndexPages:在循環輸出頁碼的時候,最大輸出多少個頁碼,默認是10 ? |
| pg:first | 第一頁的標簽 | export變量的意義: ?pageUrl - 分頁鏈接URL地址(最重要的export參數) ?pageNumber - 頁碼 ?firstItem - 首頁第一行的索引值 ?lastItem - 首頁最后一行的索引值 ? |
| pg:pre | 上一頁標簽 | export變量的意義: ?pageUrl - 分頁鏈接URL地址(最重要的export參數) ?pageNumber - 頁碼 ?firstItem - 前頁第一行的索引值 ?lastItem - 前頁最后一行的索引值 |
| pg:next | 下一頁標簽 | export變量的意義: ?pageUrl - 分頁鏈接URL地址(最重要的export參數) ?pageNumber - 頁碼 ?firstItem - 下頁第一行的索引值 ?lastItem - 下頁最后一行的索引值 ? |
| pg:last | 最后一頁 | ?export變量的意義: ?pageUrl - 分頁鏈接URL地址(最重要的export參數) ?pageNumber - 頁碼 ?firstItem - 尾頁第一行的索引值 ?lastItem - 尾頁最后一行的索引值 ? |
?
| pg:pages | 循環輸出頁碼信息 | export變量的意義: ?pageUrl - 分頁鏈接URL地址(最重要的export參數) ?pageNumber - 頁碼 ?firstItem - pageNumber這個頁碼指定的那一頁的第一行的索引值 ?lastItem - pageNumber這個頁碼指定的那一頁的最后一行的索引值 |
六.結果如圖:
頁面有點難看,這些數據是PowerDesigner生成的測試數據,很難看,呵呵。
七.換成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進行分頁就已經完成了!下面上傳了文件及Demo.
項目源程序如下,可以直接導入Myeclipse8.6
http://down.51cto.com/data/347159
轉載于:https://blog.51cto.com/enetq/622946
總結
以上是生活随笔為你收集整理的详解pager-taglib-2.0配合SSH分页的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。