1. 當前頁碼的表單參數 listuser.do?page=2
同時轉換成一個 int 類型的頁碼變量
int currentPage = Integer.parseInt(
request.getParameter("page");// 當前頁
2. 下一頁 listuser.do?page=${currentPage+1}
上一頁 listuser.do?page=${currentPage-1}
3. 一頁顯示多少數據
int pageSize = 5;//每頁顯示的數據數
4. 總頁數 totalPage
1) 先從數據庫取得總記錄數
dao.UserDAO#getUserTotalCount()
int totalCount = executeQuery("select count(*) from Users");
2) 根據一頁的數據類計算出總頁數
dao.UserManager#getTotalPage(int pageSize)
// 得到頁面總數
int totalPageCount = ((totalCount + pageSize) - 1) / pageSize;
if(totalPageCount == 0) {
totalPageCount = 1;
}
5. 從數據庫裡把第currentPage頁的數據讀取出來(Hibernate), DAO 層的代碼
dao.UserDAO#findPagedAll(int currentPage, int pageSize)
兩個參數: currentPage 當前頁(從1開始的)
pageSize 取多少數據
String queryString = "from User";
Query queryObject = getSession().createQuery(queryString);
queryObject.setFirstResult((currentPage - 1) * pageSize);
queryObject.setMaxResults(pageSize);
List result = queryObject.list();
6. 在前台顯示上下頁的鏈接,並根據總頁數的上下限來避免讓用戶跳到第-1頁或者比最大頁數還大的頁碼哪裡
<c:if test="${currentPage > 1}">
[ 上一頁的鏈接 ]
</c:if>
<c:if test="${currentPage <= 1}">
[ 上一頁的文本 ]
</c:if>
7. 通過 forEach 來顯示數據
<c:forEach items="${users}" var="user" >
${user.id}
${user.username}
<c:/forEach>
8. 通過下拉菜單來跳轉頁面
轉到
<script>
// 頁面跳轉函數
// 參數: 包含網址的選擇框(SELECT元素)
function jumpPage(select) {
var newUrl = "/hibernate_page/index.jsp?page=" + select.value;
//alert(newUrl);
document.location = newUrl;
}
</script>
<!-- 輸出 HTML SELECT 元素, 並選中當前頁面編碼 -->
<select onchange='jumpPage(this);'>
<option value="1" selected>1頁</option>
<option value="2" >2頁</option>
</select>