效果圖:
前台jsp代碼如下:
<div class="listNav"> <div class="instruction"> 您正在查看${result }個結果中的第${start+1 }-${limit }項結果。 </div> <fieldset><legend>首頁</legend> <input type="button" name="eventSubmit_doList_first" onclick="javascript:window.location.href='${pageContext.request.contextPath}/cw/allSiteCourse.do?start=0&limit=${limit}'" value="|<"> </fieldset> <fieldset><legend>前一頁</legend> <input type="button" name="eventSubmit_doList_prev" onclick="javascript:window.location.href='${pageContext.request.contextPath}/cw/allSiteCourse.do?start=${start-limit }&limit=${limit}'" value="<"> </fieldset> <select name="selectPageSize" id="selectPageSize" onchange="changePager(this.value)"> <option value="5">顯示5項…</option> <option value="10">顯示10項…</option> <option value="20" selected>顯示20項…</option> <option value="50">顯示50項…</option> <option value="100">顯示100項…</option> <option value="200">顯示200項…</option> <fieldset><legend>后一頁</legend> <input type="button" name="eventSubmit_doList_next" onclick="javascript:window.location.href='${pageContext.request.contextPath}/cw/allSiteCourse.do?start=${start+limit }&limit=${limit}'" value=">"> </fieldset> <fieldset><legend>尾頁</legend> <input type="button" name="eventSubmit_doList_last" onclick="javascript:window.location.href='${pageContext.request.contextPath}/cw/allSiteCourse.do?start=${result }&limit=${limit}'" value=">|"> </fieldset> </div>
controller如下:
@RequestMapping(value="/allSiteCourse",method=RequestMethod.GET) public String allSiteCourse(HttpServletRequest request,Pager pager){ //查詢數據庫中所有的條數 int result = cwInfoService.queryAllSitesCount(); //設置分頁 pager = cwInfoService.setPage(pager, result); List<Sites> siteList = cwInfoService.queryAllSites(pager); request.setAttribute("siteList", siteList); request.setAttribute("start", pager.getStart()); request.setAttribute("limit", pager.getLimit()); request.setAttribute("result", result); return "/jsp/coursewareSelectAllSites"; }
service,以及實現類如下:
/** * 描述:查詢出所有的站點總共有多少個 * @return */ int queryAllSitesCount(); /** * 描述:設置分頁的起始條數 * @param pager * @return */ Pager setPage(Pager pager,int result);
@Override public int queryAllSitesCount() { return cwInfoDao.queryAllSitesCount(); } @Override public Pager setPage(Pager pager,int result) { //總共多少頁 int pageCount = 0; //最后一頁的起始條數 int lastStart = 0; if(pager.getLimit()!=null){ //根據余數判斷最后一頁是否是滿 if(result%pager.getLimit()==0){ //計算出當前數據總共有多少頁 pageCount = result/pager.getLimit(); //當前頁數小於一頁 if(pageCount<=1){ lastStart = 0; }else{ lastStart = result-pager.getLimit(); } }else{ pageCount = (result/pager.getLimit())+1; if(pageCount<=1){ lastStart = 0; }else{ lastStart = (pageCount-1)*pager.getLimit(); } } } //設置分頁 if(!(pager.getStart()!=null&&pager.getLimit()!=null)){ pager.setStart(0); pager.setLimit(20); //前一頁出現負值情況 }else if(pager.getStart()<0){ pager.setStart(0); //當前頁的數據不夠一頁 }else if(result-pager.getLimit()<0){ pager.setStart(0); //下一頁出現超出數據情況 }else if(pager.getStart()>=result){ pager.setStart(lastStart); } return pager; }
dao以及底層springJDBC:
/** * 描述:查詢所有的站點信息 * @return */ List<Sites> queryAllSites(Pager pager); /** * 描述:查詢出所有的站點總共有多少個 * @return */ int queryAllSitesCount();
@Override public List<Sites> queryAllSites(Pager pager) { String sql = "select * from sakai_site order by SITE_ID limit ?,?"; Object[] obj = new Object[]{pager.getStart(),pager.getLimit()}; List<Sites> list = jdbcTemplate.query(sql,obj, new siteMapper()); return list; } @Override public int queryAllSitesCount() { String sql = "select count(*) from sakai_site"; int result = jdbcTemplate.queryForObject(sql,Integer.class); return result; }
class siteMapper implements RowMapper<Sites>{ @Override public Sites mapRow(ResultSet rs, int rowNum) throws SQLException { Sites site = new Sites(); site.setCreatedby(rs.getString("CREATEDBY")); site.setCreatedon(rs.getDate("CREATEDON")); site.setCustomPageOrdered(rs.getString("CUSTOM_PAGE_ORDERED")); site.setDescription(rs.getString("DESCRIPTION")); site.setIconUrl(rs.getString("ICON_URL")); site.setInfoUrl(rs.getString("INFO_URL")); site.setIsSoftlyDeleted(rs.getString("IS_SOFTLY_DELETED")); site.setIsSpecial(rs.getString("IS_SPECIAL")); site.setIsUser(rs.getString("IS_USER")); site.setJoinable(rs.getString("JOINABLE")); site.setJoinRole(rs.getString("JOIN_ROLE")); site.setModifiedby(rs.getString("MODIFIEDBY")); site.setModifiedon(rs.getDate("MODIFIEDON")); site.setPublished(rs.getInt("PUBLISHED")); site.setPubview(rs.getString("PUBVIEW")); site.setShortDesc(rs.getString("SHORT_DESC")); site.setSiteId(rs.getString("SITE_ID")); site.setSkin(rs.getString("SKIN")); site.setSoftlyDeletedDate(rs.getDate("SOFTLY_DELETED_DATE")); site.setTitle(rs.getString("TITLE")); site.setType(rs.getString("TYPE")); return site; } }
還有一個簡短的js:
//分頁 function changePager(obj){ window.location.href=ctx + "/cw/allSiteCourse.do?start=0&limit="+obj; } $(document).ready(function(){ if(limit!=''){ $('option[value='+limit+']').attr('selected',true); } });