您的位置:首页 > 其它

分页标签:pager-taglib的使用

2016-03-26 14:43 465 查看
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

[java] view plain copy

public class Pager<E> {

private int pageSize;//每页显示多少条

private int pageOffset;//分页的开始值

private int totalRecord;//总共多少条记录

private int totalPage;//总共多少页

private List<E> datas;//放置具体数据的列表

//省略getter setter

}

DAO层:

[java] view plain copy

public Pager<User> list(String condition) {

int pageOffset = SystemContext.getPageOffset();

int pageSize = SystemContext.getPageSize();

Connection con = null;

PreparedStatement ps = null;

ResultSet rs = null;

Pager<User> pages = new Pager<User>();

List<User> users = new ArrayList<User>();

User u = null;

try {

con = DBUtil.getConnection();

String sql = "select * from t_user";

String sqlCount = "select count(*) from t_user";

if(condition!=null||!"".equals(condition)) {

sql+=" where username like '%"+condition+"%' or nickname like '%"+condition+"%'";

sqlCount+=" where username like '%"+condition+"%' or nickname like '%"+condition+"%'";

}

sql+=" limit ?,?";

ps = con.prepareStatement(sql);

ps.setInt(1, pageOffset);

ps.setInt(2, pageSize);

rs = ps.executeQuery();

while(rs.next()) {

u = new User();

u.setId(rs.getInt("id"));

u.setNickname(rs.getString("nickname"));

u.setUsername(rs.getString("username"));

}

ps = con.prepareStatement(sqlCount);

rs = ps.executeQuery();

int totalRecord = 0;

while(rs.next()) {

totalRecord = rs.getInt(1);

}

int totalPage = (totalRecord-1)/pageSize+1;

pages.setPageOffset(pageOffset);

pages.setPageSize(pageSize);

pages.setTotalPage(totalPage);

pages.setTotalRecord(totalRecord);

} catch (SQLException e) {

e.printStackTrace();

} finally {

DBUtil.close(rs);

DBUtil.close(ps);

DBUtil.close(con);

}

pages.setDatas(users);

return pages;

}

分页部分pager.jsp:

[html] view plain copy

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

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

<%

int items = Integer.parseInt(request.getParameter("items"));

String params = request.getParameter("params"); //con

String v="";

if(params==null) params="";

if(request.getParameter(params)!=null)

v=new String(request.getParameter(params).getBytes("ISO-8859-1"),"utf-8") ;

%>

<pg:pager maxPageItems="15" items="<%=items%>" export="curPage=pageNumber">

<pg:param name="<%=params %>" value="<%=v %>"/>

<pg:last>

共<%=items %>记录,共<%=pageNumber %>页,

</pg:last>

当前第<%=curPage %>页

<pg:first>

<a href="<%=pageUrl%>">首页</a>

</pg:first>

<pg:prev>

<a href="<%=pageUrl%>">上一页</a>

</pg:prev>

<pg:pages>

<%

if(curPage==pageNumber) {

%>

[<%=pageNumber%>]

<%

} else {

%>

<a href="<%=pageUrl %>"><%=pageNumber %></a>

<%

}

%>

</pg:pages>

<pg:next>

<a href="<%=pageUrl %>">下一页</a>

</pg:next>

<pg:last>

<a href="<%=pageUrl%>">尾页</a>

</pg:last>

</pg:pager>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: