service中的實現類
public PageBean queryStuForPage(int pageSize, int page) {
String hql = "select count(*) from Tstudent";
int count = dao.getCount(hql); // 總記錄數
int totalPage = PageBean.countTotalPage(pageSize, count); // 總頁數
int offset = PageBean.countOffset(pageSize, page); // 當前頁開始記錄
int length = pageSize; // 每頁記錄數
int currentPage = PageBean.countCurrentPage(page);
List list = dao.queryStuForPage("from Tstudent", offset,length); // 該分頁的記錄
// 把分頁信息保存到Bean中
PageBean pageBean = new PageBean();
pageBean.setPageSize(pageSize); //每頁記錄數
pageBean.setCurrentPage(currentPage); //當前頁
pageBean.setAllRow(count); //總記錄數
pageBean.setTotalPage(totalPage); //總頁數
pageBean.setList(list); //要返回的某頁的記錄列表
pageBean.init();
System.out.println(pageBean.getList().get(0).toString());
return pageBean;
}
返回了一個pageBean ,查詢的頁面數據也在其中
action中
public String queryStuForPage(){
this.pageBean= ts.queryStuForPage(6, page);
return "getStuForPageList";
}
方法都沒問題 , 可是就是不知道在JSP中怎麼將PageBean中的list的數據讀取出來,以及下一頁,上一頁等待的數據信息.
下面是我的PageBean類
package utlis;
import java.util.List;
public class PageBean {
private List list;//要返回的某頁的記錄列表
private int allRow;//總記錄數
private int totalPage;//總頁數
private int currentPage;//當前頁
private int pageSize;//每頁記錄數
private boolean isFirstPage;//是否是第一頁
private boolean isLastPage;//是否為最後一頁
private boolean hasPreviousPage;//是否有前一頁
private boolean hasNextPage;//是否有下一頁;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getAllRow() {
return allRow;
}
public void setAllRow(int allRow) {
this.allRow = allRow;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
//初始化分頁信息
public void init(){
this.isFirstPage=isFirstPage();
this.isLastPage=isLastPage();
this.hasPreviousPage=ishasPreviousPage();
this.hasNextPage=ishasNextPage();
}
private boolean ishasNextPage() {
return currentPage != totalPage;
}
private boolean ishasPreviousPage() {
return currentPage !=1;
}
private boolean isLastPage() {
return currentPage == totalPage;
}
private boolean isFirstPage() {
return currentPage == 1;
}
/*
* 計算總頁數,靜態方法,供外部直接通過類名調用
* @param pageSize每頁記錄數
* @param allRow總記錄數
* @return 總頁數
*/
public static int countTotalPage(final int pageSize, final int allRow) {
int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow / pageSize + 1;
return totalPage;
}
/*
* 計算當前頁開始記錄
* @param pageSize每頁記錄數
* @param currentPage當前第幾頁
* @return 當前頁開始記錄號
*/
public static int countOffset(final int pageSize, final int currentPage) {
final int offset = pageSize * (currentPage - 1);
return offset;
}
/*
* 計算當前頁,若為0或者請求的URL中沒有"?page=",則用1代替
* @paramPage 傳入的參數(可能為空,即0,則返回1)
* @return 當前頁
*/
public static int countCurrentPage(int page) {
final int curPage = (page == 0 ? 1 : page);
return curPage;
}
}
使用el表達式c:foreach循環,items取值是${pageBean.list},遍歷這個就是你要的結果