Java中的分页技术

来源:互联网 发布:mac 不让安装不明文件 编辑:程序博客网 时间:2024/05/22 06:24

分页关键的是sql语句要理解怎么写就完成一半了

案例: 现在对一个新闻首页的新闻进行分页

  NewsDao dao=new NewsDao(); 对新闻操做的dao

  int pagesize=10;             每页面的数据数据量

  int lastpage=1;              上一页初始为1

  int nextpage=1;              下一页初始为1

  int currentpage=1;           当前页初始为1

int totalrows=dao.count(); 获取总的新闻的记录条数

//计算总的页面数

 int totalpage=totalrows%pagesize==0?

totalrows/pagesize:(totalrows/pagesize+1);

三元运算符当取出的记录数可以整除pagesize的话就去商为总页数,如果有余数则总页数还要加1

  //获取当前页面的值

  if(request.getParameter("page")!=null)

{

currentpage=Integer.parseInt(request.getParameter("page"));

  }

如果为地址栏中url中为指定page参数,则为默认为1,如果存在page参数则赋给当前的页数 currentpage

判断上一页的页码,如果当前页为1,则上一页为1,否则为当前页减1

lastpage=currentpage==1?1:(currentpage-1);

判断下一页的页码,如果当前页为总页码的大小,则下一页也为最后一页,否则为当前页加1

nextpage=currentpage==totalpage?totalpage:(currentpage+1);

通过新闻的dao类获取此页的新闻数据,参数为pagesize页面的大小,参数currentpage为当前的页码

ArrayList<News> pagelist=dao.queryByPage(pagesize,currentpage);

数据库查询语句(这里使用的是SqlServer2005

String sqlString="select top "+size+" newsid,title,publishtime from news where newsid not in (select top "+((page-1)*size)+" newsid from news order by newsid desc) order by newsid desc";

newsid 为新闻的编号,如果要查询6-10的数据,则要先查询出1-5的数据的newsid,然后选择数据时将newsid1-5之间的排除掉再选择头5条(这里假设pagesize5

 

最后在需要显示分页的位置使用

<a href=”index.jsp?page=<%=1%>”>首页</a>

<a href=”index.jsp?page=<%=lastpage%>”>上一页页</a>

<a href=”index.jsp?page=<%=nextpage%>”>下一页页</a>

<a href=”index.jsp?page=<%=totalpage%>”>尾页</a>

这样就完成分页了,当然这是最基础的方法,网上也有现成网友做好的分页类可以使用,我这里也介绍一种

需要下载一个分页的文件,百度网盘已提供链接了http://pan.baidu.com/share/link?shareid=64635&uk=909074031

文件下载完毕后,需要将文件复制到在项目的WEB-INFO目录下才能使用

导入文件后,在需要分页的页面头部要加入下面一句话才能使用:

 <%@tagliburi="/WEB-INF/MyPage.tld"prefix="pt"%>

最后在需要分页的位置使用标签

<pt:pagepageIndex="<%=currentpage%>"

url="index.jsp?"pageMax="<%=totalpage%>"/>

这里的currentp,totalpage是和上面基础分页的一样的,查询语句也是一样的

原创粉丝点击