0
点赞
收藏
分享

微信扫一扫

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

像小强一样活着 2022-03-17 阅读 28


    jsp分页技术之: 

        如下图:百度的喵

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

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

      jsp分页技术一 :  (算法)

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文件):

     代码:  


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

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>

View Code


   下面是效果图:

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




编程是一种快乐,享受代码带给我的乐趣!!!


举报

相关推荐

0 条评论