程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> mysql在JSP頁面中分頁查看的解決

mysql在JSP頁面中分頁查看的解決

編輯:關於JSP

 

最近一直在做期末的項目,所以遇見了很多問題,解決了,就會在這裡寫出來和大家分享。。。。

 

用了一個上午,自己想,和參考一些東西以後,做出了數據庫分頁查看的功能,覺得還算清晰吧,希望大家多多指教。。。

 

思路是這樣的:使用javabean來操作分頁的控制數據,然後在jsp裡實現,在頁面最後的下一頁之類的連接,增加了參數值的判斷,完美的解決了一些問題。

 

詳細的看源碼吧。。。

 

View.java

 

 

public class View { 

    private int currentPage;// 記錄當前的頁數 

    private int pageSize;// 每頁顯示的記錄數 

    private int recordCount;// 一共有多少條記錄 

 

    public View(int pageSize, int recordCount, int currentPage) { 

        this.pageSize = pageSize; 

        this.recordCount = recordCount; 

        this.setCurrentPage(currentPage); 

    } 

 

    // 計算總的頁數 

    public int getPageCount() { 

        int size = recordCount / pageSize;// 總頁數=總條數/每頁要現實的記錄 

        int flag = recordCount % pageSize;// 取模運算,為了計算最後一頁要顯示的條數 

        if (flag != 0) { 

            size++; 

        } 

        // 根據記錄數判斷返回的總頁數 

        if (recordCount == 0) {// 如果有0條記錄 

            // 返回只有1頁 

            return 1; 

        } 

        // 返回計算出來的頁數 

        return size; 

    } 

 

    // 設置sql語句中,limit的索引起始位置,從0開始 

    public int getFromIndex() { 

        return (currentPage - 1) * pageSize;// 重點算法:(當前頁碼-1)*每頁記錄數=索引的起始位置 

    } 

 

    // 設置當前頁 

    public void setCurrentPage(int currentPage) { 

        // 為什麼要設置? 

        /*

         * 因為:在jsp頁面中,會放置首頁和上一頁,下一頁和末頁兩個按鈕

         * 當在最後一頁點擊下一頁時,此時獲得頁面數會大於實際的頁面,所以頁面就要保持在最後一頁

         * 當在第一頁點擊上一頁,此時獲得的頁面數會小於或=0,此時就要一直保持在第一頁

         */ 

        int vaildPage = currentPage <= 0 ? 1 : currentPage; 

        vaildPage = vaildPage > this.getPageCount() ? this.getPageCount() 

                : vaildPage; 

        this.currentPage = vaildPage; 

    } 

 

    // 得到當前頁,用於顯示在JSP中 

    public int getCurrentPage() { 

        return currentPage; 

    } 

 

    // 得到每頁顯示的記錄數 

    public int getPageSize() { 

        return pageSize; 

    } 

 

 

index.jsp

 

 

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 

<%@page import="java.sql.Connection"%> 

<%@page import="java.sql.DriverManager"%> 

<%@page import="java.sql.PreparedStatement"%> 

<%@page import="java.sql.ResultSet"%> 

<%@page import="com.view.View"%> 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

    <head> 

        <title>分頁查看數據庫</title> 

    </head> 

 

    <body> 

        <%!//數據庫連接信息 

    public static final String URL = "jdbc:mysql://localhost:3306/j2ee"; 

    public static final String USERNAME = "root"; 

    public static final String PASSWORD = "root";%> 

        <% 

            //連接數據庫,獲取有多少條記錄 

            Class.forName("com.mysql.jdbc.Driver"); 

            Connection conn = DriverManager.getConnection(URL, USERNAME, 

                    PASSWORD); 

            String sqlCount = "select count(*) from employee";//得到一共有多少條記錄 

            PreparedStatement ps = conn.prepareStatement(sqlCount); 

            ResultSet rs = ps.executeQuery(); 

            int recordCount = 0;//一共有多少記錄 

            if (rs.next()) { 

                recordCount = rs.getInt(1); 

            } 

        %> 

        <% 

            //獲取分頁對象,傳參 

            String pageStr = request.getParameter("page"); 

            int currentPage = 1; 

            if (pageStr != null) { 

                currentPage = Integer.parseInt(pageStr); 

            } 

            View view = new View(5, recordCount, currentPage); 

            //獲取參數 

            int fromIndex = view.getFromIndex();//起始位置 

            int pageSize = view.getPageSize();//每頁顯示的記錄數 

        %> 

        <table border="1"> 

            <% 

                //執行sql 

                String sql = "select fname,lname from employee limit ?,?"; 

                ps = conn.prepareStatement(sql); 

                ps.setInt(1, fromIndex); 

                ps.setInt(2, pageSize); 

                rs = ps.executeQuery(); 

                while (rs.next()) { 

                    String fname = rs.getString(1); 

                    String lname = rs.getString(2); 

            %> 

            <tr> 

                <td><%=fname%></td> 

                <td><%=lname%></td> 

            </tr> 

            <% 

                } 

            %> 

        </table> 

        <% 

            //關閉連接 

            if (ps != null) { 

                ps.close(); 

            } 

            if (rs != null) { 

                rs.close(); 

            } 

            if (conn != null) { 

                conn.close(); 

            } 

        %> 

        當前第<%=view.getCurrentPage()%>頁,一共<%=view.getPageCount()%>頁<br/> 

        <a href="index.jsp?page=1">首頁</a> 

        <% 

            if ((view.getCurrentPage() - 1) <= 0) { 

        %> 

        <a href="index.jsp?page=1">上一頁</a> 

        <% 

            } else { 

        %> 

        <a href="index.jsp?page=<%=(view.getCurrentPage() - 1)%>">上一頁</a> 

        <% 

            } 

        %> 

        <% 

            if ((view.getCurrentPage() + 1) > view.getPageCount()) { 

        %> 

        <% 

            } else { 

        %> 

        <a href="index.jsp?page=<%=(view.getCurrentPage() + 1)%>">下一頁</a> 

        <% 

            } 

        %> 

        <a href="index.jsp?page=<%=view.getPageCount()%>">末頁</a> 

        <br> 

    </body> 

</html> 

摘自:技術豆子的博客

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved