JAVA和MySQL实现分页和页面跳转指定当前显示页数的问题

  首先,分页需要JDBC基础。所以分页也没什么好说的,主要是分页算法。直接扔出代码

 String sql2 = "select * from job limit ?,? ";
					 ps = conn.prepareStatement(sql2);
					 ps.setInt(1,(pageNow-1)*pageShowNum);
					 ps.setInt(2,pageShowNum);
					 rs = ps.executeQuery();
					 for(int i = 0;i<pageShowNum;i++){
						 if(rs.next()){
							out.println("<tr bgcolor='white'>");
							out.println("<td>"+rs.getString(5)+"</td>");
							out.println("<td>"+rs.getString(6)+"</td>");
							out.println("<td>"+rs.getString(4)+"</td>");
							out.println("<td>"+rs.getString(7)+"</td>");
							out.println("<td>"+rs.getString(8)+"</td>");
							out.println("<td>"+rs.getString(3)+"</td>");
							out.println("</tr>");
						 }
					 }
					 out.println("</table>");

其中有几个分页算法的重要变量

int pageNow = 1;//当前页码
int pageAll = 0;//一共多少页
		int pageShowNum = 10;//每页显示多少条内容
		int rowAll = 0;//一共多少条内容
下面,重点来了。如何实现类似于百度下面的页面点击跳转效果呢。就是下面只指定的显示出了10页,然后当你点击头6页,下面的页面并不会动,当你点击第七页的时候,第一个编程2,最后一个编程11.点击第9页,第一个可点击页编程4,最后一页变成13。在页尾也是,在点击页尾最后4页的时候不会动,比如一共30页。点击30,29,28,26,27的时候,

下面一直显示,21,22,23,24,25,26,27,28,29,30。

但是当你点击25时下面会显示  18 ,19,21,,22,23,24,25,26,27,28

笔者能力有限,实在 没看懂怎么个效果可以去百度看看。反正就是类似于滚动的这用效果,往后点就往后滚,往前点就会往前滚。

当然实现这个主要就是算法问题

  主要是看当前页

如果当前页小于等于10,那么直先输出1-10

如果当前页-6  >  0并且 当前页 +4 小于等于总页数

就显示出,当前页-6到当前页+4页

如果当前页+4大于总页数,就显示出最后10页

,下面扔出算法代码

 if(pageNow-6<0){
						 for(int i = 1;i<11;i++){
							 out.println("<a href=MainFace?pageNow="+i+">【"+i+"】</a>");
						 }
					 }
					 if(pageNow+4>pageAll){
						 for(int i = pageAll-10;i<=pageAll;i++){
							 out.println("<a href=MainFace?pageNow="+i+">【"+i+"】</a>");
						 }
					 }
					 if(pageNow>=6&&pageNow+4<=pageAll){
					 for(int i = pageNow-5;i<pageNow;i++){
						 out.println("<a href=MainFace?pageNow="+i+">【"+i+"】</a>");
					 }
					 for(int i = pageNow;i<=pageNow+4;i++){
						 out.println("<a href=MainFace?pageNow="+i+">【"+i+"】</a>");
					 }
					 }
					 out.println("<a href=MainFace?pageNow="+pageAll+">【尾页】</a>");
					 out.println("<a href=MainFace?pageNow="+(pageNow+1)+">【下一页】</a>");
					 out.println("</tr></td>");
					 out.println("</table>");




  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值