看看JSP中怎样实现分页显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了看看JSP中怎样实现分页显示相关的知识,希望对你有一定的参考价值。

分页依据:
select 字段列表 from 表名 limit m,n;
m: 表示起始记录,并且从0开始
n: 查询记录的个数,每页记录数
分页信息
共多少页
有没有上一页
有没有下一页
当前页
注:分页信息类Page
注2:创建分页信息辅助类PageUtil
public static Page createPage(int everyPage,int totalCount,int currentPage)
everyPage: 程序员
totalCount: 总记录数,查询数据库表记录 select count(*) from 表名
currentPage: 从默认第一页开始,下一页= 当前页+1 上一页 = 当前页-1
分页数据集合List
依据查询语句获得集合: select 字段列表 from 表名 limit m,n;
m: beginIndex
n: everyPage
具体实现:::
UserBiz:
//分页
public int getCont();
public List<User> findByPage(Page page);
123

UserBizImpl:
@Override
public int getCont()
String sql = "select count(*) as count from user";
CountUtil count = (CountUtil) udao.get(sql, CountUtil.class);
return count.getCount();


@Override
public List<User> findByPage(Page page)
String sql = "select * from user limit "+page.getBeginIndex()+", "+page.getEveryPage();
return udao.query(sql, User.class);


servlet::UserServlet
int everyPage = 5;//每页记录数
int totalCount = ubiz.getCont();//获取总记录数
//点击链接重新获取当前页
String scurrentPage = request.getParameter("currentPage");
int currentPage = 1; //当前页,默认1
if(scurrentPage == null)
currentPage = 1;//从第一页开始访问
else
currentPage = Integer.parseInt(scurrentPage);

//分页信息
Page page = PageUtil.createPage(everyPage, totalCount, currentPage);
//分页数据信息
List<User> list = ubiz.findByPage(page);

request.setAttribute("page", page);
request.setAttribute("list", list);
//转发到userlist.jsp
request.getRequestDispatcher("/back/manager/userlist.jsp").forward(request, response);

userlist.jsp中的分页表现
<table width="461" height="24" border="1" cellpadding="0" cellspacing="0">
<tr>
<td width="199">当前为第$page.currentPage页,共$page.totalPage页</td>
<td width="256">
<c:choose>
<c:when test="$page.hasPrePage">
<a href="<%=path %>/user.do?method=list¤tPage=1">首页</a> |
<a href="<%=path %>/user.do?method=list¤tPage=$page.currentPage -1 ">上一页</a>
</c:when>
<c:otherwise>
首页 | 上一页
</c:otherwise>
</c:choose>

<c:choose>
<c:when test="$page.hasNextPage">
<a href="<%=path %>/user.do?method=list¤tPage=$page.currentPage + 1 ">下一页</a> |
<a href="<%=path %>/user.do?method=list¤tPage=$page.totalPage ">尾页</a>
</c:when>
<c:otherwise>
下一页 | 尾页
</c:otherwise>
</c:choose>

</td>
</tr>
</table>

附::::page类(分页信息实体类)
public class Page
private int everyPage; //每页显示记录数
private int totalCount; //总记录数
private int totalPage; //总页数
private int currentPage; //当前页
private int beginIndex; //查询起始点
private boolean hasPrePage; //是否有上一页
private boolean hasNextPage; //是否有下一页
public Page(int everyPage, int totalCount, int totalPage,
int currentPage,int beginIndex, boolean hasPrePage,
boolean hasNextPage) //自定义构造方法
this.everyPage = everyPage;
this.totalCount = totalCount;
this.totalPage = totalPage;
this.currentPage = currentPage;
this.beginIndex = beginIndex;
this.hasPrePage = hasPrePage;
this.hasNextPage = hasNextPage;

///////get,set方法略
123456789101112131415161718192021

附:pageutil 分页信息辅助类
public class PageUtil
//创建Page对象
public static Page createPage(int everyPage,int totalCount,int currentPage) //创建分页信息对象
everyPage = getEveryPage(everyPage);
currentPage = getCurrentPage(currentPage);
int totalPage = getTotalPage(everyPage, totalCount);
int beginIndex = getBeginIndex(everyPage, currentPage);
boolean hasPrePage = getHasPrePage(currentPage);
boolean hasNextPage = getHasNextPage(totalPage, currentPage);
return new Page(everyPage, totalCount, totalPage, currentPage,
beginIndex, hasPrePage, hasNextPage);

// 以下方法辅助创建Page对象
public static int getEveryPage(int everyPage) //获得每页显示记录数
return everyPage == 0 ? 10 : everyPage;

public static int getCurrentPage(int currentPage) //获得当前页
return currentPage == 0 ? 1 : currentPage;

public static int getTotalPage(int everyPage,int totalCount) //获得总页数
int totalPage = 0;
if(totalCount != 0 &&totalCount % everyPage == 0)
totalPage = totalCount / everyPage;
else
totalPage = totalCount / everyPage + 1;

return totalPage;

public static int getBeginIndex(int everyPage,int currentPage) //获得起始位置
return (currentPage - 1) * everyPage;

public static boolean getHasPrePage(int currentPage) //获得是否有上一页
return currentPage == 1 ? false : true;

public static boolean getHasNextPage(int totalPage, int currentPage) //获得是否有上一页
return currentPage == totalPage || totalPage == 0 ? false : true;

参考技术A 后台可以处理 jsp页面接收就行

java jsp分页页码问题?

比如有多页数据
那么刚开始显示的是1,2,3,4,5
第二页就是当我单击2,3的时候显示的还是1,2.3,4,5
单击4的时候显示的则是2,3,4,5,6
5的时候显示的是3,4,5,6,7
6的时候是4,5,6,7,8
...
依次类推
怎么实现这个逻辑?
希望大神们可以将实现代码贴出来,最好是能够通用的

判断当前页是否大于3
如果不大于就让他显示12345
否则就显示
当前页-2,当前页-1,当前页,当前页+1,当前页+2
即可
参考技术A 以 本页吗 开始 ,向 前 打印 几个 数字,向 后打印 几个数字,前面 知道 第一页 ,后面 直到 数据 的总页数追问

可否将代码贴出来

追答

=1)

out.println(index-2);
out.println(index-1);

else if(index-1>=1)

out.println(index-1);

out.println(index);
if(index+1

参考技术B 可以用<c:if实现

以上是关于看看JSP中怎样实现分页显示的主要内容,如果未能解决你的问题,请参考以下文章

php中的分页显示

jsp 如何将查询结果实现分页,最好简单易懂

java中如何实现分页显示

求教jsp分页显示的问题,如何循环并分页取得参数?

java jsp分页页码问题?

springMVC怎么实现分页显示啊?就是这种效果!