分页标签:pager-taglib的使用
pager-taglib是一个用jsp标签库实现分页的工具,在它的demo中有实现好的各种常见分页方式,使用时只需pager- taglib.jar包即可,Pager会在给出的URL后面加上"?page.offset="来标识当前偏移量,使用时在jsp页面将pager- taglib的标签库引入:
<%@ taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager" %>
标签介绍
<pg:pager>:一切子标签都在它里面工作
<pg:pager items="int" maxItems="int" maxPageItems="int" maxIndexPages="int" export="expression" scope="page|request" 省略>
items:总记录数
maxPageItems:每页显示的行数,默认为10
maxIndexPages:最大输出的页码数
export:这个属性是让标签给你暴露什么变量,当然这些变量是有选择的,如在Pager标签里,可以暴露出来的变量有pageOffset及
pageNumber(参见文档),即页码偏移量及页码。通过这两个变量名,可以在Jsp或Java里面从Request里获得。
Export属性接受的值还有表达式,如currentPage=pageNumber表示,把pageNumber的值暴露出来,并赋给一个叫
CurrentPage的变量,这个变量将被保存到Request中,在Jsp或Java中可以得到。scope:有Reuqest、page可选。
<pg:param>设置加入到URL的参数如 <pg:param name=" pagesize " value="5" />
pg:first 首页标签
可以导出的值: pageUrl - 分页链接URL地址 pageNumber - 页码 firstItem - 首页第一行的索引值 lastItem - 首页最后一行的索引值
pg:pre上一页
pg:next下一页
pg:last 尾页
pg:pages 循环输出页码
下面是一个示例:
- <%@ page language="java" pageEncoding="UTF-8"%>
- <%@taglib prefix="pg" uri="http://jsptags.com/tags/navigation/pager"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>title</title>
- </head>
- <body>
- <!-- 每个标签可以导出的值参见文档 ,没有的可以用export导出 ,但用export的值也有规定-->
- <pg:pager items="1000" maxPageItems="10" maxIndexPages="7" export="number"><!-- export可以使用表达式: curpage=number,这样 curpage就相当于number -->
- <%=number %>
- <pg:first>
- <a href="<%=pageUrl %>">首页[<%=pageNumber %>]</a><!-- pageNumber导出当前页的值 -->
- </pg:first>
- <pg:prev>
- <a href="<%=pageUrl %>">上一页</a>
- </pg:prev>
- <pg:pages>
- <%if(number==pageNumber){ %>
- [<%=pageNumber %>]
- <%} else { %>
- <a href="<%=pageUrl %>">[<%=pageNumber %>]</a> <!-- pageUrl pageNumber导出值 -->
- <%} %>
- </pg:pages>
- <pg:next>
- <a href="<%=pageUrl %>">下一页</a>
- </pg:next>
- <pg:last>
- <a href="<%=pageUrl%>">尾页</a>
- </pg:last>
- </pg:pager>
- </body>
- </html>
- 下面是一个实际应用的例子:
-
Pager.java
- public class Pager<E> {
- private int pageSize;//每页显示多少条
- private int pageOffset;//分页的开始值
- private int totalRecord;//总共多少条记录
- private int totalPage;//总共多少页
- private List<E> datas;//放置具体数据的列表
- //省略getter setter
- }
DAO层:
1234567891011121314151617181920212223242526@Override
public
PagerBean<Book> findbyPager(
int
offerst) {
PagerBean<Book> pb =
new
PagerBean<Book>();
int
sumRow=
this
.getSumRow();
pb.setTotalRecord(sumRow);
String sql =
"select top "
+10+
" * from book where bookId not in"
+
" (select top "
+offerst+
" bookId from book)"
;
List<Book> lst =
new
ArrayList<Book>();
rs = query(sql,
null
);
try
{
while
(rs.next()){
Book book =
new
Book(rs.getInt(
"bookid"
), rs.getString(
"bookName"
), rs.getInt(
"booktypeId"
), rs.getString(
"author"
), rs.getString(
"pbName"
), rs.getString(
"context"
), rs.getString(
"smallimg"
), rs.getString(
"bigImg"
), rs.getDouble(
"price"
), rs.getDate(
"pbdate"
), rs.getDouble(
"hyprice"
), rs.getInt(
"bookStates"
), rs.getDate(
"sjdate"
), rs.getInt(
"num"
), rs.getInt(
"saleCount"
));
lst.add(book);
}
}
catch
(SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
closeAll();
}
pb.setDatas(lst);
return
pb;
}
servlet :
1234567891011121314151617public
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(
"utf-8"
);
response.setContentType(
"text/html;chartset=utf-8"
);
String pageOffset =request.getParameter(
"pager.offset"
) ;
int
ps=0;
try
{
ps=Integer.parseInt(pageOffset);
}
catch
(NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
ps=0;
}
IBookDao bookDao =
new
BookDao();
PagerBean<Book> pagerData =bookDao.findbyPager(ps);
request.setAttribute(
"pagerData"
, pagerData);
request.getRequestDispatcher(
"front/collect.jsp"
).forward(request, response);
jsp :
123456789101112131415161718192021<pg:pager items=
"${ pagerData.totalRecord}"
url=
"${pageContext.request.contextPath}/BookListServletByPageTag"
maxPageItems=
"10"
maxIndexPages=
"7"
export=
"number"
><!-- export可以使用表达式: curpage=number,这样 curpage就相当于number -->
<pg:first>
<a href=
"<%=pageUrl %>"
>首页[<%=pageNumber %>]</a><!-- pageNumber导出当前页的值 -->
</pg:first>
<pg:prev>
<a href=
"<%=pageUrl %>"
>上一页</a>
</pg:prev>
<pg:pages>
<%
if
(number==pageNumber){ %>
[<%=pageNumber %>]
<%}
else
{ %>
<a href=
"<%=pageUrl %>"
>[<%=pageNumber %>]</a> <!-- pageUrl pageNumber导出值 -->
<%} %>
</pg:pages>
<pg:next>
<a href=
"<%=pageUrl %>"
>下一页</a>
</pg:next>
<pg:last>
<a href=
"<%=pageUrl%>"
>尾页</a>
</pg:last>
</pg:pager>
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步