DAO层
/** * 分页查询全部员工,获取总记录数 */ public int totalPage(String className); /** * 分页查看,查看首页 */ public List<Employee> selectByPage(String className,int pageNo,int pageSize);
DaoImp里面
private EmployeeDao employeeDao; public void setEmployeeDao(EmployeeDao employeeDao) { this.employeeDao = employeeDao; } /** * 员工列表分页查询,查询总页数 * @param className * @return */ @Override public int totalPage(String className) { String hql="select count(*) from "+className; Query query= this.getSession().createQuery(hql); int total=Integer.parseInt(query.list().get(0).toString()); return total; } /** * 分页查询,查询首页 * @param className * @param pageNo * @param pageSize * @return */ @SuppressWarnings("unchecked") @Override public List<Employee> selectByPage(String className, int pageNo, int pageSize) { Query query=this.getSession().createQuery("from "+className); query.setFirstResult((pageNo-1)*pageSize);//每页显示的第一条记录 query.setMaxResults(pageSize);//每页显示的记录数 return query.list(); }
BIz层
/** * 分页查看,查看首页 */ @SuppressWarnings("rawtypes") public List<Employee> selectByPage(String className,int pageNo,int pageSize); /** * 查看下一页 * @param line * @param className * @return */ public int searchRecordsNextPage(int line,String className);
BIzImpl层
private EmployeeDao employeeDao; public void setEmployeeDao(EmployeeDao employeeDao) { this.employeeDao = employeeDao; } /** * 分页查询 * @param className * @param pageNo * @param pageSize * @return */ @SuppressWarnings("rawtypes") @Override public List<Employee> selectByPage(String className, int pageNo, int pageSize) { List list= employeeDao.selectByPage(className,pageNo,pageSize); return list; } /** * 查看下一页 * @param pageSize * @param className * @return */ @Override public int searchRecordsNextPage(int pageSize, String className) { int total = employeeDao.totalPage(className); int pageNo = total / pageSize; if(total % pageSize>0){ pageNo++; } return pageNo; }
Action控制层
private Employee employee=new Employee(); @Override public Employee getModel() { return employee; } private EmployeeBiz employeeBiz; public void setEmployeeBiz(EmployeeBiz employeeBiz) { this.employeeBiz = employeeBiz; } /** * 分页查看员工列表 */ @SuppressWarnings({"unchecked","rawtypes"}) public String selectFirstPage(){ Map<String,Object> request= (Map<String, Object>) ActionContext.getContext().get("request"); try{ List list=employeeBiz.selectByPage("Employee",1,3); int totalPage=employeeBiz.searchRecordsNextPage(3,"Employee"); request.put("list",list); request.put("totalPage",totalPage); request.put("currentPage",1); }catch(Exception e){ e.printStackTrace(); } return "selectFirstPage"; } /** * 分页查找下一页 */ @SuppressWarnings("rawtypes") public String selectNextPage(){ HttpServletRequest request= ServletActionContext.getRequest(); int next=Integer.parseInt(request.getParameter("page")); try{ List list=employeeBiz.selectByPage("Employee",next,3); int total=employeeBiz.searchRecordsNextPage(3,"Employee"); request.setAttribute("list",list); request.setAttribute("currentPage",next); request.setAttribute("totalPage",total); }catch(Exception e){ e.printStackTrace(); } return "selectNextPage"; }
前端div接收参数
<div> 第${currentPage }页 <input type="hidden" id="tpage" name="tpage" value="${totalPage} "></input> <c:if test="${currentPage>1 }"> <input type="button" value="首页" onclick="show(1)"></input> <input type="button" value="上一页" onclick="show(${currentPage-1})"></input> </c:if> <c:if test="${currentPage<totalPage }"> <input type="button" value="下一页" onclick="show(${currentPage+1},${totalPage })"></input> <input type="button" value="尾页" onclick="show(${totalPage})"></input> </c:if> 共${totalPage }页 </div> </div>
前端javascript里
function show(next,total){ if (next<=0) { alert("已经是首页了"); return; } if (next>total) { alert("已经是尾页了"); return; } document.forms[0].action="employeeselectNextPage?page="+next; document.forms[0].submit(); }
注意:1,在body里面要想实现分页要把body里面的form表单加上
<form id="myForm" name="myForm" method="post">
2,如果使用的是mysql需要修改hibernate.cfg.xml里面的
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
3,在struts.xml文件里面需要修改name里面的是第一页和下一页的方法
<!-- Employee action --> <action name="employee*" class="EmployeeAction" method="{1}"> <result name="selectFirstPage">/employee.jsp</result> <result name="selectNextPage">/employee.jsp</result> <result name="add" type="redirectAction">employeeselectFirstPage</result> <result name="updateEmp">/employee_update.jsp</result> <result name="update" type="redirectAction">employeeselectFirstPage</result> <result name="delete" type="redirectAction">employeeselectFirstPage</result> <result name="error">/error.jsp</result> </action>