一、分頁算法:首先定義四個變量
int pageSize:每頁顯示多少條記錄
int pageNow:希望顯示第幾頁
int pageCount:一共有多少頁
int rowCount:一共有多少條記錄
說明:pageCount是計算出來的
(1)算法1
// 計算pageCount
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
(2)算法2
pageCount = (rowCount + pageSize - 1) / pageSize;
二、使用mysql數據庫做分頁操作
(1)增加表的記錄,實現快速複製sql語句:
insert into 表名 (字段1,字段2…) select 字段1,字段2… from 表名
(2)核心代碼:
// -----------分頁查詢功能------------
int pageSize = 5;// 每頁顯示幾條
int pageNow = 1;// 當前頁
int rowCount = 0;// 共有多少條數據
int pageCount = 0;// 共有幾頁數據
String courrentPage = req.getParameter("pageNow");
if (courrentPage != null) {
pageNow = Integer.parseInt(courrentPage);
}
Connection conn = null;
PreparedStatement stmt = null;
ResultSet resultSet = null;
// 加載數據庫驅動
try {
Class.forName("com.mysql.jdbc.Driver");
// 獲取數據庫連接
String url = "jdbc:mysql://localhost:3306/student";
String user = "root";
String password = "tianyejun6";
conn = DriverManager.getConnection(url, user, password);
String sql = "select count(*) from users";
stmt = (PreparedStatement) conn.prepareStatement(sql);
resultSet = stmt.executeQuery();
if (resultSet.next()) {
rowCount = resultSet.getInt(1);
}
// 計算pageCount
if (rowCount % pageSize == 0) {
pageCount = rowCount / pageSize;
} else {
pageCount = rowCount / pageSize + 1;
}
pageCount = (rowCount + pageSize - 1) / pageSize;
// 執行查詢語句
String sqlSearch = "select * from users where userId limit ?,?";
stmt = (PreparedStatement) conn.prepareStatement(sqlSearch);
// 給?賦值
stmt.setInt(1, (pageNow - 1) * pageSize);
stmt.setInt(2, pageSize);
resultSet = stmt.executeQuery();
writer.println(
"<table border='1'><tr><th>id</th><th>userName</th><th>password</th><th>email</th><th>grade</th></tr>");
while (resultSet.next()) {
writer.println("<tr>");
writer.println("<td>" + resultSet.getInt(1) + "</td>");
writer.println("<td>" + resultSet.getString(2) + "</td>");
writer.println("<td>" + resultSet.getString(3) + "</td>");
writer.println("<td>" + resultSet.getString(4) + "</td>");
writer.println("<td>" + resultSet.getString(5) + "</td>");
writer.println("</tr>");
}
writer.println("</table>");
// 顯示上一頁
if (pageNow > 1) {
writer.print("<a href=Wel?pageNow=" + (pageNow - 1) + "> 上一頁 </a>");
}
// 顯示超鏈接
for (int i = pageNow; i <= pageNow + pageSize - 1; i++) {
writer.print("<a href=Wel?pageNow=" + i + "> " + i + " </a>");
}
// 顯示下一頁
if (pageNow > 1 && (pageNow + 1) <= pageCount) {
writer.print("<a href=Wel?pageNow=" + (pageNow + 1) + "> 下一頁 </a>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (resultSet != null) {
resultSet.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
注意:
mysql分頁查詢語句:
select * from 表名 where 列名 limit ?,?
效果圖:
(1)界面和業務邏輯未分離,源碼下載地址:http://download.csdn.net/detail/tianyejun6/9726582
(2)界面和業務邏輯使用MVC設計模式分離,源碼下載地址:http://download.csdn.net/detail/tianyejun6/9727045
啓動tomcat服務器首次訪問地址:http://localhost:8080/test/Login