结构+效果图
Page.java :
public class Page {
/** 是否有上一页 */
private boolean hasPrePage;
/** 是否有下一页 */
private boolean hasNextPage;
/** 每页的数量 */
private int everyPage;
/** 总页数 */
private int totalPage;
/** 当前页 */
private int currentPage;
/** 起始点 */
private int beginIndex;
/** 总记录数 */
private int totalCount;
/**
* @return totalCount
*/
public int getTotalCount() {
return totalCount;
}
/**
* @param totalCount
* 要设置的 totalCount
*/
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
/** The default constructor */
public Page() {
}
/**
* construct the page by everyPage
*
* @param everyPage
* */
public Page(int everyPage) {
this.everyPage = everyPage;
}
/** The whole constructor */
public Page(boolean hasPrePage, boolean hasNextPage, int everyPage,
int totalPage, int currentPage, int beginIndex, int totalCount) {
this.hasPrePage = hasPrePage;
this.hasNextPage = hasNextPage;
this.everyPage = everyPage;
this.totalPage = totalPage;
this.currentPage = currentPage;
this.beginIndex = beginIndex;
this.totalCount = totalCount;
}
/**
* @return Returns the beginIndex.
*/
public int getBeginIndex() {
return beginIndex;
}
/**
* @param beginIndex
* The beginIndex to set.
*/
public void setBeginIndex(int beginIndex) {
this.beginIndex = beginIndex;
}
/**
* @return Returns the currentPage.
*/
public int getCurrentPage() {
return currentPage;
}
/**
* @param currentPage
* The currentPage to set.
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
/**
* @return Returns the everyPage.
*/
public int getEveryPage() {
return everyPage;
}
/**
* @param everyPage
* The everyPage to set.
*/
public void setEveryPage(int everyPage) {
this.everyPage = everyPage;
}
/**
* @return Returns the hasNextPage.
*/
public boolean getHasNextPage() {
return hasNextPage;
}
/**
* @param hasNextPage
* The hasNextPage to set.
*/
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
/**
* @return Returns the hasPrePage.
*/
public boolean getHasPrePage() {
return hasPrePage;
}
/**
* @param hasPrePage
* The hasPrePage to set.
*/
public void setHasPrePage(boolean hasPrePage) {
this.hasPrePage = hasPrePage;
}
/**
* @return Returns the totalPage.
*
*/
public int getTotalPage() {
return totalPage;
}
/**
* @param totalPage
* The totalPage to set.
*/
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
@Override
public String toString() {
return "Page [hasPrePage(是否有上一页)=" + hasPrePage
+ ", hasNextPage(是否有下一页)=" + hasNextPage
+ ", everyPage(每页的数量)=" + everyPage + ", totalPage(总页数)="
+ totalPage + ", currentPage(当前页)=" + currentPage
+ ", beginIndex(起始点)=" + beginIndex + ", totalCount(总记录数)="
+ totalCount + "]";
}
}
PageUtil.java
public class PageUtil {
/**
* Use the origin page to create a new page
*
* @param page
* @param totalRecords
* @return
*/
public static Page createPage(Page page, int totalRecords) {
return createPage(page.getEveryPage(), page.getCurrentPage(),
totalRecords);
}
/**
* the basic page utils not including exception handler
*
* @param everyPage
* @param currentPage
* @param totalRecords
* @return page
*/
public static Page createPage(int everyPage, int currentPage, int totalRecords) {
everyPage = getEveryPage(everyPage);
currentPage = getCurrentPage(currentPage);
int beginIndex = getBeginIndex(everyPage, currentPage);
int totalPage = getTotalPage(everyPage, totalRecords);
boolean hasNextPage = hasNextPage(currentPage, totalPage);
boolean hasPrePage = hasPrePage(currentPage);
return new Page(hasPrePage, hasNextPage, everyPage, totalPage,
currentPage, beginIndex, totalRecords);
}
private static int getEveryPage(int everyPage) {
return everyPage == 0 ? 10 : everyPage;
}
private static int getCurrentPage(int currentPage) {
return currentPage == 0 ? 1 : currentPage;
}
private static int getBeginIndex(int everyPage, int currentPage) {
return (currentPage - 1) * everyPage;
}
private static int getTotalPage(int everyPage, int totalRecords) {
int totalPage = 0;
if (totalRecords % everyPage == 0)
totalPage = totalRecords / everyPage;
else
totalPage = totalRecords / everyPage + 1;
return totalPage;
}
private static boolean hasPrePage(int currentPage) {
return currentPage == 1 ? false : true;
}
private static boolean hasNextPage(int currentPage, int totalPage) {
return currentPage == totalPage || totalPage == 0 ? false : true;
}
}
PageAction
public class PageAction extends ActionSupport {
private StudentDAO studentDao = null;
private List list = null;
private Integer count = null;
private Page page = null;
private Integer everyPage = 3;// 默认每页显示3条数据
private Integer currentPage = 1;// 默认显示第一页
public Integer getEveryPage() {
return everyPage;
}
public void setEveryPage(Integer everyPage) {
this.everyPage = everyPage;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public void setStudentDao(StudentDAO studentDao) {
this.studentDao = studentDao;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
public Page getPage() {
return page;
}
public void setPage(Page page) {
this.page = page;
}
public String execute() throws Exception {
page = PageUtil.createPage(everyPage, currentPage,
studentDao.getProductCount());
System.out.println(page);
list = studentDao.getProductByPage(page);// 得到分页数据
return "success";
}
}
DaoImpl
public List getProductByPage(final Page page) {
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query = session.createQuery("from Student");
query.setFirstResult(page.getBeginIndex());
query.setMaxResults(page.getEveryPage());
return query.list();
}
});
}
public int getProductCount() {
List list = this.getHibernateTemplate().find("from Student");
return list.size();
}
jsp
SSH分页案例ID | 姓名 | 性别 | 年龄 | 学校 |
${student.id } | ${student.name } | ${student.sex } | ${student.age } | ${student.school } |