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;
}
}