S2SH项目实现分页功能
2013-05-14 09:21
423 查看
javaWEB项目实现分页的方法很多,网上也有很多列子,最近工作中S2SH框架项目中需要一个分页的功能,查看了很多用一下方式实现,功能思路很清晰,觉得是很好的一种实现方法,记录下便多学习。
刚开始得到分页循环页数,但增加了跳转功能时,在select下拉框中总是重复循环最大页,通过查看代码修改,最终终于实现。解决思路就是需要增加一个跳转分页的javaBean,目的是封装成一个list,在得到页数后,在页面可以直接通过list的属性获取递增循环页数。
1.javaBean:
pageBean(分页类)
pageNo(跳转时用到list属性封装类)
4.daoImpl
7.页面显示效果
刚开始得到分页循环页数,但增加了跳转功能时,在select下拉框中总是重复循环最大页,通过查看代码修改,最终终于实现。解决思路就是需要增加一个跳转分页的javaBean,目的是封装成一个list,在得到页数后,在页面可以直接通过list的属性获取递增循环页数。
1.javaBean:
pageBean(分页类)
public class PageBean { private List<实体类类名> list1; //返回某一页的记录列表 private List<实体类类名> list2; //返回某一页的记录列表 private int allRow; //总记录数 private int pageSize; //每页记录数 private int totalPage; //总页数 private int currentPage; //当前页数 private boolean isFirstPage; //是否为第一页 private boolean isLastPage; //是否为最后一页 private boolean hasPreviousPage; //是否有上一页 private boolean hasNextPage; //是否有下一页 /** * 初始化分页信息 */ public void init(){ this.isFirstPage=isFirstPage(); this.isLastPage=isLastPage(); this.hasPreviousPage=isHasPreviousPage(); this.hasNextPage=isHasNextPage(); } /** * 判断分页信息,只需getter方法 */ public boolean isFirstPage(){ return currentPage==1; } public boolean isLastPage(){ return currentPage==totalPage; } public boolean isHasPreviousPage(){ return currentPage!=1; } public boolean isHasNextPage(){ return currentPage!=totalPage; } /** * 计算总页数,静态方法,供外部直接通过类名调用 * @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; } /** * 计算当前页开始记录 * @parampageSize每页记录数 * @paramcurrentPage当前第几页 * @return当前页开始记录号 */ public static int countOffset(final int pageSize,final int currentPage){ final int offset = pageSize*(currentPage-1); return offset; } /** * 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替 * @param page 传入的参数(可能为空,即0,则返回1) * @return 当前页 */ public static int countCurrentPage(int page){ final int curPage = (page==0?1:page); return curPage; } public List<实体类类名> getList1() { return list1; } public void setList1(List<实体类类名> list1) { this.list1 = list1; } public List<实体类类名> getList2() { return list2; } public void setList2(List<实体类类名> list2) { this.list2 = list2; } public int getAllRow() { return allRow; } public void setAllRow(int allRow) { this.allRow = allRow; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } 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; } }
pageNo(跳转时用到list属性封装类)
public class PageNo { private int pageNumber; //跳转到第几页 public int getPageNumber() { return pageNumber; } public void setPageNumber(int pageNumber) { this.pageNumber = pageNumber; } }2.action
@SuppressWarnings("serial") public class XxxAction extends ActionSupport implements Serializable { protected HttpSession getSession() { return ServletActionContext.getRequest().getSession(); } private XxxService xxxService; public XxxService getXxxService() { return xxxService; } public void setXxxService(XxxService xxxService) { this.xxxService = xxxService; } private int page=1; //第几页 private PageBean pageBean; public int getPage() { return page; } public void setPage(int page) { this.page = page; } public PageBean getPageBean() { return pageBean; } public void setPageBean(PageBean pageBean) { this.pageBean = pageBean; } private List<PageNo> numberList; private PageNo pageNo; public PageNo getPageNo() { return pageNo; } public void setPageNo(PageNo pageNo) { this.pageNo = pageNo; } /** * 列表并分页 * @return */ public String getListAndPage(){ pageBean=xxxService.queryForPage(this,10,page); numberList=new ArrayList<PageNo>(); if(pageBean.getTotalPage()>0){ for(int i=0;i<pageBean.getTotalPage();i++){ pageNo=new PageNo(); pageNo.setPageNumber(i+1); numberList.add(i, pageNo); } } getSession().setAttribute("numberList", numberList); return "success"; } }3.service,serviceImpl,dao略
4.daoImpl
public class XxxDaoImpl extends BaseDAO implements XxxDao { /** * 列表并分页 */ @SuppressWarnings("unchecked") public PageBean queryForPage(XxxAction version,int pageSize,int page) { Session session=getSession(); try{ String sql=" from Entity as entity where 1=1 "; Query query1=session.createQuery(sql); Query query2=session.createQuery(sql); List list1 = query1.list(); int allRow=list1.size(); //总记录数 int totalPage=PageBean.countTotalPage(pageSize, allRow); //总页数 final int length=pageSize; //每页记录数 final int currentPage=PageBean.countCurrentPage(page); //当前页,不要为0或url为空 final int offset=PageBean.countOffset(pageSize, page); query2.setFirstResult(offset); query2.setMaxResults(length); List<PaiPubVersion> list2=query2.list(); //把分页信息保存到Bean中 PageBean pageBean = new PageBean(); pageBean.setPageSize(pageSize); pageBean.setCurrentPage(currentPage); pageBean.setAllRow(allRow); pageBean.setTotalPage(totalPage); pageBean.setList2(list2); pageBean.init(); return pageBean; }catch(RuntimeException re){ throw re; }finally{ if(session!=null){ session.close(); } } } }5.jsp页面
<td colspan="6"> 共<s:property value="pageBean.allRow"/> 条记录 共<s:property value="pageBean.totalPage"/> 页 当前第<s:property value="pageBean.currentPage"/>页 <s:if test="%{pageBean.currentPage == 1}"> <input type="button" value="第一页" disabled="disabled" /> <input type="button" value="上一页" disabled="disabled" /> </s:if> <s:else> <input type="button" value="第一页" onclick="pageNo('1')"/> <input type="button" value="上一页" onclick="pageNo('<s:property value="%{pageBean.currentPage-1}"/>')"/> </s:else> <s:if test="%{pageBean.currentPage != pageBean.totalPage}"> <input type="button" value="下一页" onclick="pageNo('<s:property value="%{pageBean.currentPage+1}"/>')"/> <input type="button" value="最后一页" onclick="pageNo('<s:property value="%{pageBean.totalPage}"/>')"/> </s:if> <s:else> <input type="button" value="下一页" disabled="disabled" /> <input type="button" value="最后一页" disabled="disabled" /> </s:else> 跳转到: <select id="gotoNo" name="gotoNo" onchange="onTiao()"> <s:iterator value="#session.numberList"> <s:if test="pageBean.currentPage eq pageNumber"> <option value="<s:property value="pageNumber"/>" selected="selected" ><s:property value="pageNumber"/></option> </s:if> <s:else> <option value="<s:property value="pageNumber"/>"><s:property value="pageNumber"/></option> </s:else> </s:iterator> </select> 页 </td>6.js
function pageNo(fenye){ document.pageform.action="getListAndPage.action?page="+fenye; document.pageform.submit(); } function onTiao(){ var gotoNo = document.getElementById('gotoNo').value; document.pageform.action="getListAndPage.action?page="+gotoNo; document.pageform.submit(); }
7.页面显示效果
相关文章推荐
- S2SH项目实现分页功能
- ssh项目实战----分页功能的完整的实现(通用分页、基类实现)
- SSH项目实现分页功能
- node.js---sails项目开发(6)--- 实现分页功能
- 【struts2+hibernate+spring项目实战】分页功能的完整的实现(通用分页、基类实现)
- 实现Repeater分页功能,该方法可以直接复制到自己的项目
- struts2+spring+hibernate整合写的项目怎么实现分页功能
- OA项目 分页功能总结二 实现较为复杂的分页功能(资料来源于传智播客汤阳光的视频教程)
- SpringMVC与Mybatis集合实现分页功能(实际项目)
- 实现Java Web项目分页功能
- 网站前端_JavaScript-项目经验.纯JavaScript实现客户端的分页功能?
- JAVA_WEB项目之Lucene检索框架实现增删查改的代码优化以及分页功能实现
- 使用pager-taglib插件实现SSH框架的分页显示功能,只翻页三出错
- 第十周项目3(1)实现基本功能
- unity项目实现“再按一次退出程序”提示功能
- PagedDataSource类实现DataList和Repeater控件的分页显示功能
- SQL 2005的ROW_NUMBER()实现分页功能(转载)
- 第7周-项目1-完整实现复数类中的运算符重载-扩展+、-、*、/运算符的功能
- ASP.NET - 自定义控件【第十天 实现分页功能的DataList(附该系列文章PDF版本)】
- jquery easyui datagrid 分页实现---善良公社项目