1:接着上次寫的圖書管理系統:http://www.cnblogs.com/biehongli/p/6445803.htmljavascript
此次新增了分頁查詢;css
2:爲何會用到分頁呢,由於列表內容太多了,因此使用分頁進行顯示。html
分頁的核心就是計算每頁多少記錄和總頁數以及第幾頁。java
3:首先先寫如何計算每頁多少記錄和第幾頁,依舊在BookDao.java和BookDaoImpl.java中繼續增長方法
sql
在計算每頁多少記錄和第幾頁的後臺核心代碼以下所示:數據庫
//第二步書寫sql語句
String sql="select * from book limit ?,? ";
ps=con.prepareStatement(sql);//第三步:預編譯
//第幾頁須要設置好是頁數減一乘以每頁的記錄數便是第多少頁
ps.setInt(1, (page-1)*record);
ps.setInt(2, record);jsp
1 /*** 2 * 分頁查詢的方法 3 * @param page 第幾頁 4 * @param record 一頁有多少記錄 5 * @return 6 */ 7 public List<Book> bookPage(int page,int record);
1 @Override 2 public List<Book> bookPage(int page, int record) { 3 Connection con=null; 4 PreparedStatement ps=null; 5 ResultSet rs=null; 6 try { 7 con=BaseDao.getCon();//第一步鏈接數據庫 8 //第二步書寫sql語句 9 String sql="select * from book limit ?,? "; 10 ps=con.prepareStatement(sql);//第三步:預編譯 11 //第幾頁須要設置好是頁數減一乘以每頁的記錄數便是第多少頁 12 ps.setInt(1, (page-1)*record); 13 ps.setInt(2, record); 14 15 //第四步執行sql 16 rs=ps.executeQuery(); 17 List<Book> list=new ArrayList<Book>(); 18 while(rs.next()){ 19 Book book=new Book(); 20 book.setBookid(rs.getInt("bookid")); 21 book.setBookname(rs.getString("bookname")); 22 book.setPrice(rs.getDouble("price")); 23 book.setAuthor(rs.getString("author")); 24 book.setPic(rs.getString("pic")); 25 book.setPublish(rs.getString("publish")); 26 27 list.add(book); 28 } 29 return list; 30 } catch (ClassNotFoundException e) { 31 e.printStackTrace(); 32 } catch (SQLException e) { 33 e.printStackTrace(); 34 }finally{ 35 //關閉資源,避免出現異常 36 BaseDao.close(con, ps, rs); 37 } 38 39 return null; 40 }
4:首先先寫如何計算總頁數,依舊在BookDao.java和BookDaoImpl.java中繼續增長方法ide
1 /*** 2 * 獲取總頁數 3 * @param record 4 * @return 5 */ 6 public int getCount(int record);
1 @Override 2 public int getCount(int record) { 3 Connection con=null; 4 PreparedStatement ps=null; 5 ResultSet rs=null; 6 //設置初始值爲-1 7 int n=-1; 8 try { 9 con=BaseDao.getCon();//第一步鏈接數據庫 10 //第二步書寫sql語句 11 String sql="select count(*) from book "; 12 ps=con.prepareStatement(sql);//第三步:預編譯 13 14 //第四步執行sql 15 rs=ps.executeQuery(); 16 if(rs.next()){ 17 //獲取第一條記錄,由於查詢count(1)就一條記錄,獲取便可,即總記錄數 18 n=rs.getInt(1); 19 //將總記錄數除以每頁的總記錄數然乎向上取整便可 20 n=(int)Math.ceil(1.0*n/record); 21 } 22 23 } catch (ClassNotFoundException e) { 24 e.printStackTrace(); 25 } catch (SQLException e) { 26 e.printStackTrace(); 27 }finally{ 28 //關閉資源,避免出現異常 29 BaseDao.close(con, ps, rs); 30 } 31 32 return n; 33 }
5:接下來直接在book.jsp進行代碼的開發,完成分頁功能,本頁的都是核心,由於在book.jsp頁面完成了如何操做上一頁,下一頁,跳轉頁數,以及完成了首頁尾頁的控制ui
1 <%@page import="com.bie.dao.impl.BookDaoImpl"%> 2 <%@page import="com.bie.dao.BookDao"%> 3 <%@ page language="java" contentType="text/html; charset=UTF-8" 4 pageEncoding="UTF-8" %> 5 <%@ page import="java.util.List" %> 6 <%@ page import="com.bie.po.Book" %> 7 <%@ page import="com.bie.service.impl.BookServiceImpl" %> 8 9 <%@ include file="head.jsp" %> 10 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 11 <html> 12 <head> 13 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 14 <title>圖書處理頁面</title> 15 <style type="text/css"> 16 h1{text-align:center;} 17 </style> 18 19 <script type="text/javascript"> 20 function clickIt(){ 21 var p2=document.getElementById("t2").value; 22 location.href="book.jsp?p="+p2; 23 } 24 </script> 25 </head> 26 <body> 27 <%-- <% 28 //第一次使用的方法 29 Book book=new Book(); 30 BookServiceImpl service=new BookServiceImpl(); 31 List<Book> list=service.select(book); 32 %> --%> 33 34 <% 35 Book book=new Book(); 36 BookDao dao=new BookDaoImpl(); 37 //2:獲取從下面上一頁下一頁傳來的參數p 38 String p2=request.getParameter("p"); 39 40 //1:設置好第一頁開始和一頁有五條記錄 41 int p=1; 42 int r=5; 43 //5:獲取到返回的總頁數,將每頁的總記錄數傳進去 44 int count=dao.getCount(r); 45 46 //3:若是p2不爲null且不爲空,就轉化爲p 47 if(p2!=null && !p2.equals("")){ 48 p=Integer.parseInt(p2); 49 } 50 //4:若是頁數爲負的那麼就賦值爲首頁 51 if(p<=0){ 52 p=1; 53 } 54 55 //6:控制後面的頁數,若是大於總頁數,將最後一頁賦值爲尾頁便可 56 if(p>=count){ 57 p=count; 58 } 59 60 //7:調用分頁的方法進行分頁操做 61 List<Book> list=dao.bookPage(p, r); 62 63 %> 64 <h1>圖書列表</h1> 65 <a href="javascript: window.history.go(-1)">返回上一級</a> 66 <table align="center" cellpadding="10" cellspacing="10"> 67 68 <tr bgcolor="green"> 69 <td>編號</td> 70 <td>書名</td> 71 <td>價格</td> 72 <td>做者</td> 73 <td>封皮</td> 74 <td>出版社</td> 75 </tr> 76 <%-- <% 77 for(Book b:list){ 78 %> --%> 79 <% 80 String bg=""; 81 for(int i=0;i<list.size();i++){ 82 Book b=list.get(i); 83 if(i%2==0) 84 bg="pink"; 85 else 86 bg="yellow"; 87 %> 88 <tr bgcolor="<%=bg%>"> 89 <td><%=b.getBookid() %></td> 90 <td><a href="doInfo.jsp?bookid=<%=b.getBookid() %>"><%=b.getBookname() %></a></td> 91 <td><%=b.getPrice() %></td> 92 <td><%=b.getAuthor() %></td> 93 <td><%=b.getPic() %></td> 94 <td><%=b.getPublish() %></td> 95 </tr> 96 <% 97 } 98 %> 99 </table> 100 <div align="center"> 101 第<%=p %>/共<%=count %>頁 102 <a href="book.jsp?p=0">首頁</a> 103 <a href="book.jsp?p=<%=p-1 %>">上一頁</a> 104 <a href="book.jsp?p=<%=p+1 %>">下一頁</a> 105 <a href="book.jsp?p=<%=count%>">尾頁</a> 106 <input type="text" size="2" id="t2"> 107 <input type="button" value="go" onclick="clickIt()"/> 108 </div> 109 </body> 110 </html>
演示效果以下所示:spa
還有不少須要完善的,因此先分享一下咯,繼續努力咯!!!