JAVA和MySQL实现分页和页面跳转指定当前显示页数的问题
2017-07-13 16:59
891 查看
首先,分页需要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;//当前页码
下面一直显示,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>");
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>");
相关文章推荐
- jsp实现分页(限定显示指定页数)和页面跳转功能
- 用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
- 让链接在指定的iframe中跳转显示,实现链接内容不刷新父页面显示到iframe中
- jsp中完整的分页显示和页面跳转功能实现的源代码
- easyUI分页中,如何实现页面跳转,再返回时,仍然到跳转前页数。(含页面显示条数)
- Java实现页面显示中的信息分页
- PHP+MySQL实现输入页码跳转到指定页面功能示例
- 二、实现从一页面跳转到指定模块的位置,并将该模块在主区域中显示出来
- Session超时跳转到指定页面(filter实现)解决了图片被过滤问题
- Jquery 实现点击一个页面跳转后在另外一个页面显示指定位置
- 用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
- JSP+Javabean+JSTL实现了记录分页显示
- GridView分页后跳转其他页面进行添加,编辑,删除操作后,仍返回到当前页码
- 分页显示问题的解决方法(jsp,sqlserver,mysql,oracle)
- 用js实现页面显示当前日期和时间的代码
- 指定当前的页面中的所有链接点击之后以新窗口的形式弹出,而不在当前页面显示链接的东西
- JavaBean+Jsp 实现页面分页
- asp.net + CSS实现动态菜单突出显示当前页面!
- 显示一个java跳转页面
- 如何实现点击一个按钮后跳转的指定的链接页面