前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jsp-------------之分页技术(一)

jsp-------------之分页技术(一)

作者头像
Gxjun
发布2018-03-26 16:21:58
2K0
发布2018-03-26 16:21:58
举报
文章被收录于专栏:mlml

    jsp分页技术之: 

        如下图:百度的喵

   看上图中卡哇伊的小苗的爪子下面的数字,就是分页啦!那我们如何做出这样一个效果呢? 下面我们来逐一分解:

      jsp分页技术一 :  (算法)

代码语言:javascript
复制
 1 /*
 2   int pageSize   // 每一页显示多少条记录
 3   int pageNow    // 希望显示第几页
 4   int pageCount  //一共多少页
 5   int rowCount   //一共有多少条记录
 6 
 7   说明:  
 8    pageSize   : 是指定的pageNow是用户选择的rowCount是从表中查询得到的
 9    rowCount   :  是从表中查询得到的
10    pageCount  :  是从计算出来的,该计算公式如下:
11    
12    核心代码:
13 */
14      pageCount = rowCount /pageSize;
15      if(rowCount % pageSize ==0)pageCount++;
16 /*
17 举例说明:
18     有用户表共九条记录:
19       rowCount = 9 ;
20     每页显示3条记录:pageSize = 3;
21     那么更具我们的算法:
22     pageCount =3; (恰好)
23   如果每页显示4条记录
24   pageSize = 4 ; 那么最后一页只有一条记录
25  */

  基于这个算法,其实我们应该比较好构造出一个jsp+Servlet的分页技术,(╯‵□′)╯︵┻━┻现在就让本渣来展示一二,哦呼呼!额, 可能有jsp大家,会拿着砖块拍本渣的头,说,你丫的,需要这么复杂吗? 数据库中不是提供了这样的语句查询吗?

  本渣还是幽幽的带着怨恨的眼神, 曰: “小可”,你可知道万一你查询的数据库的编码iD不连续咋个办?  需要承认的是,数据库也能做到这点,但是,“咳,咳,咳,如果有如下数据,就不大好处理鸟”

     举个栗子:

              1  王二小  12

              2  王三小  13

              4   张小明  14

              5   葫芦娃   7

  然后你想以一页三行的方式分页

 如果有MYsql数据库的话,  用这样的语句:  select  * from user  limit  start , num ;

     然后你会发现,每一页都只有两行,因为编号为3的数据缺失啦! 

        下面这个方法(为了简化,写一个纯jsp文件):

     代码:  

代码语言:javascript
复制
  1 <%@page import="java.sql.ResultSetMetaData"%>
  2 <%@page import="java.sql.DriverManager"%>
  3 <%@page import = "java.sql.PreparedStatement"%>
  4 <%@page import = "java.sql.Connection"%>
  5 <%@page import = "java.sql.ResultSet" %>
  6 <%@ page language = "java" import="java.util.*" pageEncoding="UTF-8"%>
  7 
  8 <%
  9 String path = request.getContextPath();
 10 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 11 %>
 12 
 13 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 14 <html>
 15   <head>
 16     <base href="<%=basePath%>">
 17      
 18     <title>分页显示</title>
 19     
 20     <meta http-equiv="pragma" content="no-cache">
 21     <meta http-equiv="cache-control" content="no-cache">
 22     <meta http-equiv="expires" content="0">    
 23     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 24     <meta http-equiv="description" content="This is my page">
 25     <!--
 26     <link rel="stylesheet" type="text/css" href="styles.css">
 27     -->
 28 
 29 </head>  
 30    <%
 31    int default_size =3;
 32    int pageCount=0;     //页面总数
 33    int rowCount=0;     //行数统计 
 34    int pagenow=0;     //当前页面 
 35    int pageSize=default_size;     //页面的显示数目
 36    String Driver = "com.mysql.jdbc.Driver";
 37    String url = "jdbc:mysql://localhost:3306/myshop";
 38    String sql = "";
 39    Connection ct=null ;
 40    PreparedStatement pst=null;
 41    ResultSet rs=null;
 42    ResultSetMetaData rsmd =null;
 43    Class.forName(Driver);
 44    ct = DriverManager.getConnection(url,"root","123");
 45    //第一次: 统计书本的种类数
 46     sql = "select count(*) from book ;";
 47     pst = ct.prepareStatement(sql);
 48     rs = pst.executeQuery();
 49    //或的网页总数
 50    while(rs.next())
 51       pageCount=rs.getInt(1);
 52       String usernow = request.getParameter("pagenow");
 53     if(usernow != null && !usernow.isEmpty() ){
 54           pagenow = Integer.parseInt(usernow);
 55     }
 56        sql ="select * from book limit "+pagenow*pageSize+","+pageSize;
 57        pst = ct.prepareStatement(sql);
 58        rs  = pst.executeQuery();
 59       rsmd = rs.getMetaData();
 60   %>  
 61    <%-- 将所有的页面全部用一个页面来显示  --%>
 62    <hr>
 63    <body>
 64      <table border="2" >
 65       <tr>
 66         <td> 书籍编号  </td><td> 书籍名称 </td>
 67         <td> 书籍作者 </td><td> 书籍出版社 </td>
 68         <td> 价          格 </td><td> 书籍数量  </td>
 69       </tr>
 70       <%
 71          int col = rsmd.getColumnCount();  
 72          while(rs.next()){
 73       %>
 74        <tr>
 75        <% 
 76          for(int i=1; i<=col ;i++){
 77        %> 
 78        <td><%=rs.getString(i)%></td>      
 79        <% } %>
 80        </tr>
 81        <% } %>
 82     </table>
 83 
 84      <hr>
 85      <%
 86       if(pagenow>0) {
 87      %>
 88       <%System.out.println("pagenow_1"+pagenow); %>
 89        &nbsp;&nbsp;<a href=wahaha.jsp?pagenow=<%=pagenow-1%> >【 上一页 】 </a>   
 90       <%
 91         }else{
 92       %>
 93         &nbsp;&nbsp;<a href=wahaha.jsp?pagenow=<%=pagenow%> >【 上一页 】 </a>   
 94       <%
 95         }
 96       %>
 97     <%
 98       int useID=0;
 99       int pagenum = pageCount/pageSize ;
100       if( pageCount % pageSize != 0 ) pagenum++ ; 
101       for( useID=1 ; useID<=pagenum ; useID++ ){
102     %>
103      <a href=wahaha.jsp?pagenow=<%=useID-1 %> >【<%=useID %>】</a>  
104     <% 
105       }   
106      if( pagenow +1<pagenum ){     
107     %>
108  
109       <a href=wahaha.jsp?pagenow=<%=1+pagenow%> >【 下一页 】 </a> 
110    <% }else{ %>
111       <a href=wahaha.jsp?pagenow=<%=pagenow%> >【 下一页 】 </a> 
112    <% }%>  
113   </body> 
114 </html>

   下面是效果图:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-01-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档