【Java精品源码栏目提醒】:以下是网学会员为您推荐的Java精品源码-【精品】最好用的分页代码(java版) - 其它资料,希望本篇文章对您学习有所帮助。
package com.web.utilsimport
java.io.Serializableimport
java.sql.ResultSetimport
java.sql.ResultSetMetaDataimport
java.sql.SQLExceptionimport
java.util.ArrayListimport
java.util.HashMapimport
java.util.Listimport javax.servlet.http.HttpServletRequestimport org.apache.commons.logging.Logimport org.apache.commons.logging.LogFactoryimport org.springframework.jdbc.core.JdbcTemplateimport org.springframework.jdbc.core.RowCallbackHandler/ 分页代码 author Star version 1.0 2008/07/08 /public class CutPage implements Serializable private static Log log LogFactory.getLogCutPage.class private int curPageNo 0 // 当前页数,从 0 开始 private int size 0 // 所有数据条数 private String url // 页面跳转的路径 private List showList // 当前页面需要显示的数据列表 private int pageSize 20// 每页显示的数据条数 private int groupSize 1// 多少页为一组 private String pageNavigation// 导航条 / 每次通过 sql 语句从数据库里面分组取出需要显示的数据 param request javax.servlet.http.HttpServletRequest 对象 param sql String 查询数据库的 sql 语句 param pageSize int 每页显示的条数 param groupSize int 分成多少组 param url String 页面跳转的路径,若没有特殊的参数传递,可以传入 null 或quotquot, 如是在 aciton 里面调用,并且 action 是继承自 DispatherAction 的话最好传入完整的路径 /public void initHttpServletRequest request String sql int pageSize int groupSize int pageNo String url // 上一页、下一页跳转路径 if url null this.url url else this.url request.getRequestURL quotquot if pageSize gt 0 this.pageSize pageSize// 每页多少条记录 if groupSize gt 0 this.groupSize groupSize // 当前第几页 if pageNo lt 0 this.curPageNo 0 else this.curPageNo pageNo int curGroup this.curPageNo / this.groupSize 1 // 是否是新的一组数据,如果是则到数据库取数据 this.size parseIntrequest.getSession.getAttributequotpage_all_sizequot quotquot 0 if this.curPageNo this.groupSize 0 request.getSession.getAttributequotcur_groupquot null ampamp parseInt quotquot request.getSession.getAttributequotcur_groupquot 1 curGroup this.size 0 request.getParameterquotreloadquot null request.getSession.setAttributequotcur_groupquot curGroup if pageNo gt 0 ampamp request.getSession.getAttributequotpage_sqlquot null sql request.getSession.getAttributequotpage_sqlquot quotquot else request.getSession.setAttributequotpage_sqlquot sql this.size getTotalCountsql List list getPageDatasql this.curPageNo / this.groupSize this.pageSize this.groupSize this.pageSize this.groupSize request.getSession.setAttributequotpage_all_sizequot this.size request.getSession.setAttributequotpage_cur_listquot list this.setShowListlist// 设置页面上的显示数据 else this.setShowListList request.getSession.getAttribute quotpage_cur_listquot// 设置页面上的显示数据 / 每次通过 sql 语句从数据库里面分组取出需要显示的数据 param request javax.servlet.http.HttpServletRequest 对象 param sql String 查询数据库的 sql 语句 param pageSize int 每页显示的条数 param groupSize int 分成多少组 param url String 页面跳转的路径,若没有特殊的参数传递,可以传入 null 或quotquot, 如是在 aciton 里面调用,并且 action 是继承自 DispatherAction 的话最好传入完整的路径 / public void initHttpServletRequest request String sql int pageSize int groupSize String url // 当前第几页 String curPage request.getParameterquotpageNoquot initrequest sql pageSize groupSize parseIntcurPage -1 url / 每次通过 sql 语句从数据库里面分组取出需要显示的数据 param request javax.servlet.http.HttpServletRequest 对象 param sql String 查询数据库的 sql 语句 param pageSize int 每页显示的条数 param groupSize int 分成多少组 param url String 页面跳转的路径,若没有特殊的参数传递,可以传入 null 或quotquot, 如是在 aciton 里面调用,并且 action 是继承自 DispatherAction 的话最好传入完整的路径 / public void initHttpServletRequest request String sql int pageSize int groupSize int pageNo initrequest sql pageSize groupSize pageNo quotquot / 这种方式是一次性把所有的数据取出来,再分页显示 只需传递一次数据,会有一个 pageNo 的参数进行传递 这种方法在 jsp 页面上使用很方便,但是在 servlet 或 action 里面使用时,要达到减少数据库访问的目的,则需先判断是否执行查询数据库操作,如下使用: List list null ifrequest.getParameterquotpageNoquot null request.getParameterquotpageNoquot.equalsquotnullquot list dao.getDataFromDb// 调 用 自 己 的 方 法 操 作 数 据 库 ,从 数 据 库 里 面取 出数 据 CutPage cp new CupPagerequestlist20quotquot param request javax.servlet.http.HttpServletRequest 对象 param allList 传进来的所有数据, 第一次会放把数据放在 session 里面,以后在 session中取数据 param pageSize 每页显示的条数 param url 页面跳转的路径,若没有特殊的参数传递,可以赋成 null 或quotquot, 如是在 aciton 里面调用,并且 action 是继承自 DispatherAction 的话最好传入完整的路径 / public void initHttpServletRequest request List allList int pageSize String url String page_num request.getParameterquotpageNoquot this.curPageNo parseIntpage_num 0// 当前页码 List list new ArrayList if allList null list allList request.getSession.setAttributequotall_Listquot list else list List request.getSession.getAttributequotall_Listquot if list null list new ArrayList this.size list.size// 总的数据条数 if url null this.url url else this.url request.getRequestURL quotquot if pageSize gt 0 this.pageSize pageSize// 每页显示的条数 setShowListlist// 设置显示数据 / 返回分页导航条 return pageNavigation String 分页导航条 / public String getPageNavigation // 最终返回的分页导航条 String pageNavigation quot共有quot size quot条数据ampnbspampnbspquot // 记录数超过一页需要分页 if size gt pageSize if url null ampamp quotquot.equalsurl if url.indexOfquotquot gt -1 // 如果 url 中已经包含了其他的参数就把 curPageNo 参数接在后面 url quotampquot else // 如果 url 中没有别的参数 url quotquot // 生成一个提交页面的函数 pageNavigation quotltscriptgtquot pageNavigation quotfunction gotoPagepage_numquot pageNavigation quotlocation.hrefquot url quotpageNopage_numquot pageNavigation quotlt/scriptgtquot pageNavigation quot每页quot pageSize quot条ampnbspampnbspquot quot 当 前 第 ltselect namepageNo idpageNoonchangejavascript:gotoPagethis.valuegtquot int curPageNos size pageSize 0 size / pageSize : size / pageSize 1 for int i 0 i lt curPageNos i if i curPageNo pageNavigation quotltoption valuequot i quot selectedgtquot i 1 quotlt/optiongtquot else pageNavigation quotltoption valuequot i quotgtquot i 1 quotlt/optiongtquot pageNavigation quotlt/selectgt页ampnbspampnbsp共quot curPageNos quot页ampnbspampnbspquot // 如果不是第一页导航条将包含quot首页quot和quot上一页quot的连接 if curPageNo gt 0 pageNavigation quotlta hrefquotjavascript:void0quotonclickquotgotoPage0return falsequotgt首页lt/agtampnbspquot quotlta hrefquotjavascript:void0quot onclickquotgotoPagequot curPageNo - 1 quotreturn falsequotgt上一页lt/agtampnbspampnbspquot else pageNavigation quot首页ampnbsp上一页ampnbspampnbspquot // 如果不是最后一页导航条将包含quot末页quot和quot下一页quot if curPageNo lt curPageNos - 1 pageNavigation quotlta hrefquotjavascript:void0quot onclickquotgotoPagequot curPageNo 1 quotreturn falsequotgt下一页lt/agtampnbspquot quotlta hrefquotjavascript:void0quot onclickquotgotoPagequot curPageNos - 1 quotreturn falsequotgt末页lt/agtquot else pageNavigation quot下一页ampnbsp末页quot return pageNavigation / 返回分页后的总页数 return pagecount int 总页数 / public int getPageCount int pagecount 0 if size pageSize 0 pagecount size / pageSize else pagecount size / pageSize 1 return pagecount / 返回最后一页的记录数 return lastpagesize int 最后一页的记录数 /public int getLastPageCount int lastpagesize 0 if size pageSize 0 lastpagesize pageSize else lastpagesize size pageSize return lastpagesize// 设置显示的记录列表private void setShowListList list log.infoquottotalSizequot this.size quot curPageNoquot this.curPageNo quot pageSizequot this.pageSize quot groupSizequot this.groupSize if list null list new ArrayList if pageSize gt list.size this.showList list else if groupSize lt 1 groupSize 1 if pageSize curPageNo 1 gt list.size if pageSize curPageNo gt list.size this.showList list.subListlist.size - pageSize list.size// 返回最后一页的数据 else this.showList list.subListpageSize curPageNo list .size else this.showList list.subListpageSize curPageNo pageSize curPageNo 1 else if pageSize curPageNo groupSize 1 gt list.size this.showList list.subListpageSize curPageNo groupSize list.size else this.showList list.subListpageSize curPageNo groupSize pageSize curPageNo groupSize 1 public List getShowList return showListpublic int getCurPageNo return curPageNopublic void setCurPageNoint curPageNo this.curPageNo curPageNopublic int getSize return sizepublic void setSizeint size this.size sizepublic String getUrl return urlpublic void setUrlString url this.url urlpublic int getPageSize return pageSizepublic void setPageSizeint pageSize this.pageSize pageSizepublic int getGroupSize return groupSizepublic void setGroupSizeint groupSize this.groupSize groupSizeprivate int parseIntObject s int defaultValue if s null ampamp s.toString.matchesquotdquot return Integer.parseInts.toString else return defaultValue / 拆解简单 sql type:1-取 from,2-取 where,3-取 orderby /private String parseHqlString sql int type switch type case 1: if sql.indexOfquotwherequot gt 0 return sql.substring0 sql.indexOfquotwherequot - 1 else if sql.indexOfquotorder byquot gt 0 return sql.substring0 sql.indexOfquotorder byquot - 1 else return null case 2: if sql.indexOfquotwherequot gt 0 if sql.indexOfquotorder byquot gt 0 return sql.substringsql.indexOfquotwherequot sql .indexOfquotorder byquot - 1 else return sql.substringsql.indexOfquotwherequot else return null case 3: if sql.indexOfquotorder byquot gt 0 return sql.substringsql.indexOfquotorder byquot else return null return null/ 获取总记录条数 param sql return /private int getTotalCountString sql log.debugquotquery sql:quot sql String from parseHqlsql 1 String where parseHqlsql 2 log.debugquotparse sql result - from:quot from log.debugquotparse sql result - where:quot where if from null log.errorquotgtsql 无效:quot sql return 0 if where null where quotquot try String fromTrim from.substringfrom.indexOfquotfromquot String s quotselect count1 quot fromTrim quot quot where log.debugquotget total count sql:quot s return getSpringJdbcTemplate.queryForInts catch Exception e e.printStackTrace return 0 / 通过 sql 查询一页的数据 param sql param firstResult param maxResults return /private List getPageDatafinal String sql final int firstResult final int maxResults log.debugquotsqlquot sql quot firstResultquot firstResult quot maxResultsquot maxResults try JdbcTemplate jt getSpringJdbcTemplate return queryForListsql quot limit quot firstResult quotquot maxResults jt catch Exception e e.printStackTrace return new ArrayListpublic static List queryForListString sql JdbcTemplate jt log.debugquotSpringJdbcTemplate:quot sql final List list new ArrayList try jt.querysql new RowCallbackHandler public void processRowResultSet rs throws SQLException HashMap m new HashMap ResultSetMetaData meta rs.getMetaData if meta null int colCount meta.getColumnCount for int i 1 i lt colCount .
上一篇:
【精品文档】Java语言规格说明1程序结构Java语言的源程序代码由一个或多个编译单元
下一篇:
超市进销存管理系统的开发