jsp分頁

 

1,分頁的原理:javascript

一般咱們從數據庫取得的數據較多時不會所有展示出來,須要用到分頁。css

2,怎麼取到咱們所須要的數據呢?html

*處理分頁請求的Servlet或者jspjava

*請求要顯示頁面的頁碼mysql

*每頁顯示的信息數jquery

*總頁數sql

3,分頁分爲兩大類:數據庫

*內存分頁:一次將全部的頁面查詢出來,而後根據頁面的請求顯示指定的記錄數。設計模式

*sql分頁:根據頁面的請求一次只從數據庫中讀取一頁的結果,而後在頁面顯示該頁。(select *from table limit 開始位置,結束位置)session

下面開始進行分頁實戰:

1,首先咱們建立一個page封裝類,

 

 1 package cn.com.yong.Pojo;
 2 
 3 import java.util.List;
 4 
 5 public class Page {
 6     private int count;//總條數
 7     private List<Announcement>  evCount;//顯示的數據
 8     private int pageSize=6;//每頁的條數
 9     @SuppressWarnings("unused")
10     private int pageCount;//總頁數
11     private int pageNow;//當前頁
12     public Page(){}
13     public Page(int count, List<Announcement> evCount, int pageSize,
14             int pageCount, int pageNow) {
15         this.count = count;
16         this.evCount = evCount;
17         this.pageSize = pageSize;
18         this.pageCount = pageCount;
19         this.pageNow = pageNow;
20     }
21     public int getCount() {
22         return count;
23     }
24     public void setCount(int count) {
25         this.count = count;
26     }
27     public List<Announcement> getEvCount() {
28         return evCount;
29     }
30     public void setEvCount(List<Announcement> evCount) {
31         this.evCount = evCount;
32     }
33     public int getPageSize() {
34         return pageSize;
35     }
36     
37     public int getPageCount() {
38         int i=0;
39         if(getCount()%getPageSize()==0){
40             i=getCount()/getPageSize();
41         }else{
42             i=getCount()/getPageSize()+1;
43         }
44         return i;
45     }
46     public void setPageCount(int pageCount) {
47         this.pageCount = pageCount;
48     }
49     public int getPageNow() {
50         return pageNow;
51     }
52     public void setPageNow(int pageNow) {
53         this.pageNow = pageNow;
54     }
55     
56     
57 }

2.咱們寫一個接口,加上咱們須要實現的方法

1 public interface AnnouncementDao {
2     
3     public Page getListPage(Page page);
4     
5 }

3.實現接口

 1 public class AnnouncementDaoImplement implements AnnouncementDao{
 2 public Page getListPage(Page page) {
 3         int coun=0;
      //建立list對象,用來存儲查詢到的數據庫數據
4 List<Announcement> list=new ArrayList<Announcement>();
      //與數據庫創建聯繫(經過單列設計模式實現,文章最後會附上)
5 con=DBConnection.getDBConnectionInstance().getDBConnection();
      //查詢總記錄數
6 String sql="select count(*) from announcement";
      //按照要求查詢須要的記錄 兩個問號分別表明起始位置和結束位置
7 String sql2="select id,title,context from announcement limit ?,?"; 8 try { 9 ps=con.prepareStatement(sql2);
        //下標從零開始,須要-1
10 ps.setInt(1, (page.getPageNow()-1)*page.getPageSize()); 11 ps.setInt(2, page.getPageSize()); 12 ResultSet rs2=ps.executeQuery(); 13 while(rs2.next()){ 14 Announcement an=new Announcement(); 15 an.setId(rs2.getInt(1)); 16 an.setTitle(rs2.getString(2)); 17 an.setContext(rs2.getString(3));
           //把查詢到的數據添加到list集合裏
18 list.add(an); 19 } 20 rs=con.createStatement().executeQuery(sql); 21 if(rs.next()){ 22 coun=rs.getInt(1); 23 24 }
        //把獲得的list集合設置給page的成員變量EvCount
25 page.setEvCount(list);
        //查詢到的總記錄數附給count
26 page.setCount(coun); 27 28 } catch (SQLException e) { 29 e.printStackTrace(); 30 } 31 return page; 32 33 } 34 35 }

4,建立一個Servlet

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import cn.com.yong.DaoImplement.AnnouncementDaoImplement;
import cn.com.yong.Pojo.Page;
@WebServlet("/AnnouncementFindAllServlet")
public class AnnouncementFindAllServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    Page page=null;
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            doPost(request, response);
        
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //建立一個session對象
        HttpSession session=request.getSession();
    //獲取實現類中的參數page,獲得裏面的數據 page
=(Page)session.getAttribute("page"); if(page==null){ page=new Page(); } int pageNow=0;
     //獲取當前頁的屬性 String str
=request.getParameter("pageNow"); if(str==null){ pageNow=1; }else{ pageNow=Integer.parseInt(str); }
         //把當前頁獲得的數值賦給page類中的pagenow變量 page.setPageNow(pageNow); AnnouncementDaoImplement adi
=new AnnouncementDaoImplement(); //調用方法 page=adi.getListPage(page);
      //    爲page設置屬性讓jsp頁面可以接受這個屬性 session.setAttribute(
"page", page); response.sendRedirect("AnnouncementSelectAll.jsp"); } }

5,jsp頁面

  1 <%
  2 String path = request.getContextPath();
  3 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  4 Page pa=(Page)session.getAttribute("page");
  5 %>
  6 
  7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8 <html>
  9   <head>
 10     <base href="<%=basePath%>">
 11      
 12     <title>My JSP 'AnnouncementDao.jsp' starting page</title>
 13     
 14     <meta http-equiv="pragma" content="no-cache">
 15     <meta http-equiv="cache-control" content="no-cache">
 16     <meta http-equiv="expires" content="0">    
 17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 18     <meta http-equiv="description" content="This is my page">
 19     <script src="jquery-1.6.4.min.js" type="text/javascript"></script>
 20     <script type="text/javascript"> 
 21     $(document).ready(function demo(){
 22     
 23         $("th").css({ color: "black", background: "#DDDDDD" });
 24         
 25         
 26     });
 27     function getFirstPage(p){
 28         if(p==1){
 29             alert("你已經在首頁了")
 30             }else{
 31             window.location.href="AnnouncementFindAllServlet?pageNow=1";
 32                 }
 33         }
 34     function getLastPage(p){
 35         var last=<%=pa.getPageCount()%>;
 36         if(p==last){
 37             alert("你已經在尾頁了");
 38             }else{
 39             window.location.href="AnnouncementFindAllServlet?pageNow="+last;
 40                 }
 41         }
 42     function getPageUp(p){
 43         if(p==1){
 44         alert("你已經在首頁了");
 45             }else{
 46                 window.location.href="AnnouncementFindAllServlet?pageNow="+(p-1);
 47                 }
 48         }
 49     function getPageDn(p){
 50         var last=<%=pa.getPageCount()%>;
 51         if(p==last){
 52         alert("你已經在尾頁了");
 53             }else{
 54                 window.location.href="AnnouncementFindAllServlet?pageNow="+(p+1);
 55                 }
 56         }
 57     function getJumpPage(pn){
 58         var changePage = document.getElementById("jumpPage").value;
 59         if(changePage ==-1){
 60             alert("請選擇你要跳轉的頁面");
 61         }else if(changePage==pn){
 62             alert("您已經在該頁");
 63         }else{
 64             window.location.href="AnnouncementFindAllServlet?pageNow="+changePage;
 65         }
 66     }
 67     </script>
 68   </head>
 69   
 70   <body>
 71      <p id="one" style="font-weight: bold;">公告管理</p>
 72      <p style="color: red;">____________________________________________________________________________________________________</p>
 73   <table align="center" width="100%" border="1" cellpadding="1" cellspacing="1" style="border-collapse: collapse;">
 74          <tr>
 75             <th>公告編號</th>
 76             <th>公告標題</th>
 77             <th>操做</th>
 78         </tr>
 79     <%    
 80    
 81         for(Announcement an:pa.getEvCount()){
 82             
 83     %>
 84         
 85         
 86         <tr align="center">
 87             <td><%=an.getId()%></td>
 88             <td><%=an.getTitle()%></td>
 89             <td><a href="AnnouncementDelServlet?id=<%=an.getId()%>">刪除</a>||
 90             <a href="AnnouncementUpdateServlet?id=<%=an.getId()%>">修改</a></td>
 91             
 92         </tr>
 93         
 94     <%} %>
 95     </table>
 96         <p>共<%=pa.getPageCount()%>頁,當前第<%=pa.getPageNow()%> 97         <span id="firstPage" onclick="getFirstPage(<%=pa.getPageNow()%>)">首頁</span>
 98         <span id="pageUp" onclick="getPageUp(<%=pa.getPageNow()%>)">上一頁</span>
 99         <span id="pageDn" onclick="getPageDn(<%=pa.getPageNow()%>)">下一頁</span>
100         <span id="lastPage" onclick="getLastPage(<%=pa.getPageNow()%>)">尾頁</span>
101         <span>
102         <span>跳轉到
103                     <select id="jumpPage" onchange="getJumpPage(<%=pa.getPageNow() %>)">
104                         <option value="-1">--請選擇--</option>
105                         <%
106                             for(int i=1;i<=pa.getPageCount();i++){
107                         %>
108                             <option value="<%=i%>"><%=i%></option>
109                         <% }%>
110                     </select>
111                     頁</span>
112         </span>
113         </p>
114   </body>
115 </html>

附:jdbc單例

public class DBConnection {
    private String url="jdbc:mysql://localhost:3306/ei";
    private String user="root";
    private String password="666888";
    private Connection con=null;
    //構造方法私有化
    private DBConnection(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //建立一個私有化對象
    private static DBConnection jdbc=new DBConnection();
    //實例
    public static DBConnection getDBConnectionInstance(){
        return jdbc;
    }
    public Connection getDBConnection() {
        return con;
    }
}
相關文章
相關標籤/搜索