分页显示数据

 

分页显示

实现分页显示,需要关注几点关键点

1.确定每页显示的数量

     要根据实际的页面设计,确定每个页面显示多少条数据,就是说每次从数据库中需要查询多少数据显示在页面上。

2.计算显示的页数

    要进行分页显示,那我们就要知道数据库的总总数量,要分成多少页去显示。

    (1)通过查询得到数据库中数据的总记录数  (Oracl数据库)

  
  
  
  
  1. public int getCount{  
  2.         String nsqlString="select count(*)  
  3.                    from news";  
  4.         int count=0;  
  5.         //....省略执行代码  
  6.         if(rs.next()){  
  7.             count=rs.getInt(1);  
  8.         }  
  9.         return count;  
  10.     } 

    (2)有了数据库的总记录数  我们就可以根据每页显示的数量计算出总共要分几页显示了

  
  
  
  
  1. public int getTotalPages(int count,int pageSize){  
  2.          int totalpages=0;  
  3.          totalpages=(count%pageSize==0)?  
  4.          (count/pageSize):(count/pageSize+1);  
  5.          return totalpages;  

   3.编写SQL语句

(Oracle数据中) 

 

  
  
  
  
  1. <%  
  2.    String sql="select * from (select rownum as r, t.*"+" form (select news.* from news order by ndate desc) t"+  
  3. " where rownum<=10) where r>5"  
  4. %> 

  rownum是Oracle数据库提供的一组称为伪劣的数据库列

  rownum作用是表示行号

 代码执行的结果是查询news表中的第6条~第10条的数据

 

这样我们总结出一个规律:

    1)  每页显示的第一条数据行号应该等于每页显示数据量*(当前页页码-1)。

    2) 每页显示的最后一条数据行号应该等于每页显示的数据量*当前页页码。

 

  
  
  
  
  1. <%  
  2.    String sql="select * from (select rownum as r, t.* from ("+  
  3.    "select news.* from news order by ndate desc) t " +  
  4.    "where rownum<="+pageSize*pageIndex+") where r>"+  
  5.    pageSize*(pageIndex-1);  
  6. %> 

     其中pageSize变量表示每页显示的数据条数

   pageIndex变量表示当前页的页码

    4.在JSP页面中分页设置

   (1) 确定当前页

  
  
  
  
  1. <%  
  2.     String currentPage=request.getParameter("pageIndex")//获得当前页数  
  3.      if(currentPag==null){  
  4.         currentPage=1;  
  5.     }  
  6.     int pageIndex=Integer.parseInt(currentPage);  
  7. %> 

      (2) 分页设置

  
  
  
  
  1. <%  
  2.    <a href="news_list.jsp?pageIndex=1">首页</a>&nbsp;  
  3.    <a href="news_list.jsp?pageIndex=<%=pageIndex-1>">上一页</a> 
  4.    <a href="news_list.jsp?pageIndex=<%=pageIndex+1>">下一页</a> 
  5.    <a href="news_list.jsp?pageIndex=<%=totalpages%>">末页</a> 
  6. %> 

      (3) 首页与末页的控制

  
  
  
  
  1. <%  
  2.    String currentPage=request.getParameter("pageIndex");  
  3.        if(currentPage==null){  
  4.             currentPage="1";  
  5.        }  
  6.        int pageIndex=Integer.parseInt(currentPage);  
  7.        //对首页与末也进行控制  
  8.         if(pageIndex<1){  
  9.           pageIndex=1;  
  10.        }else if(pageIndex>totalpages){  
  11.           pageIndex=totalpages;  
  12.        }  
  13. %> 

    

   下面就来看一下完整的JSP页面分页的代码

  
  
  
  
  1. <%@ page contentType="text/html; charset=UTF-8" %> 
  2. <%@ page import="java.sql.*,org.jbit.news.model.*" %> 
  3. <%  
  4.         NewsModel nm=new NewsModel();    //封装了查询新闻的方法  
  5.         int pageSize=10;  //每页显示记录  
  6.         //最大页数  
  7.         int totalpages=nm.getTotalPages("select * from news",pageSize);  
  8.         String currentPage=request.getParameter("pageIndex");  //获取当前页数  
  9.         if(currentPage==null){  
  10.             currentPage="1";  
  11.         }  
  12.         int pageIndex=Integer.parseInt(currentPage);  
  13.         if(pageIndex<1){  
  14.             pageIndex=1;  
  15.         }else if(pageIndex>totalpages){  
  16.             pageIndex=totalpages;  
  17.         }  
  18.         String sql="select * from (select rownum as r, t.* from (" +  
  19.             "select news.* from news order by ndate desc) t " +  
  20.             "where rownum<="+pageSize*pageIndex+") where r>"+  
  21.             pageSize*(pageIndex-1);  
  22.         List list=nm.display(sql);   //调用查询方法  返回新闻集合  
  23.           
  24. %> 
  25. <!-- 省略循环显示新闻标题的代码 --> 
  26.       当前页数:[<%=pageIndex %>/<%=totalpages %>]&nbsp;  
  27. <%  
  28.         if(pageIndex<1){       //控制页面显示分格  
  29. %>   
  30.  
  31.         <a href="news_list.jsp?pageIndex=1">首页</a>&nbsp;  
  32.         <a href="news_list.jsp?pageIndex= <%= pageIndex-1%>">上一页</a> 
  33. <%}  
  34.         if(pageIndex<totalpages){  
  35. %> 
  36.         <a href="news_list.jsp?pageIndex= <%= pageIndex+1%>">下一页</a> 
  37.         <a href="news_list.jsp?pageIndex=<%=totalpages %>">末页</a>&nbsp;  
  38. <%} %> 

 

你可能感兴趣的:(jsp,web分页显示数据)