關(guān)于此文
運(yùn)用第一篇分頁(yè)的例子,結(jié)果以失敗告終。在網(wǎng)上又尋找了很多例子。大多是都是這一種。著手開(kāi)發(fā)的項(xiàng)目采用spring MVC框架。符合需求。摘下來(lái),試了一試。
網(wǎng)上的例子總是少一些東西。經(jīng)過(guò)一番折騰。終于搞定了。下面分享出來(lái),供參考。
分頁(yè)基本邏輯思想懂了,重點(diǎn)是在于怎么實(shí)現(xiàn)。怎么實(shí)現(xiàn)更好。還需要進(jìn)一步思考。
配置xml-pager.tld
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>Pager</description> <tlib-version>1.0</tlib-version> <short-name>page</short-name> <uri></uri> <tag> <name>createPager</name> <tag-class>getui.util.Pager</tag-class> <body-content>JSP</body-content> <attribute> <name>curPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>totalPage</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>pageSize</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>totalCount</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.Integer</type> </attribute> <attribute> <name>formId</name> <required>true</required> <rtexprvalue>true</rtexprvalue> <type>java.lang.String</type> </attribute> </tag></taglib>
分頁(yè)控件-Pager
package getui.util;import java.io.IOException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;/*** * 分頁(yè)控件 * * @author Anny */public class Pager extends TagSupport { private Integer curPage; //當(dāng)前頁(yè)碼 private Integer totalPage; //總頁(yè)數(shù) private Integer pageSize = 10; //一頁(yè)顯示的記錄數(shù) private Integer totalCount = 0; //記錄總數(shù) private String formId; //請(qǐng)求的action name private Integer lastIndex; //結(jié)束索引 public int doStartTag() throws JspException { StringBuffer buffer=new StringBuffer(); JspWriter out = pageContext.getOut(); int pageNumber = 0; if (totalPage % pageSize == 0) { pageNumber = totalPage / pageSize; } else { pageNumber = (totalPage / pageSize) + 1; } if (curPage < 1) { curPage = 1; } try { if (pageNumber > 0) { buffer.append("<script type='text/javascript'>");//script-Start buffer.append("function go(pageNum)"); buffer.append("{");//{start buffer.append("var f = document.getElementById('" + formId + "');"); buffer.append("f.action = f.action + '?pageNum=' + pageNum + '&pageSize="+pageSize + "';"); buffer.append("f.submit();" ); buffer.append("}");//}end buffer.append("</script>");//script-end out.print(buffer.toString()); out.append("<div class='page-number-strip' style='height:62px;text-align: right;'> ");//page-number-strip out.print("<ul class='pagination'>");//添加Bootstrap分頁(yè)的樣式pagination int start = 1; int end = totalPage; for (int i = 4; i >= 1; i--) { if ((curPage - i) >= 1) { start = curPage - i; break; } } for (int i = 4; i >= 1; i--) { if ((curPage + i) <= totalPage) { end = curPage + i; break; } } // 如果小于9則右側(cè)補(bǔ)齊 if (end - start + 1 <= 9) { Integer padLen = 9 - (end - start + 1); for (int i = padLen; i >= 1; i--) { if ((end + i) <= totalPage) { end = end + i; break; } } } // 如果還小于9左側(cè)補(bǔ)齊 if (end - start + 1 <= 9) { Integer padLen = 9 - (end - start + 1); for (int i = padLen; i >= 1; i--) { if ((start - i) >= 1) { start = start - i; break; } } } if (curPage > 1) { if (start > 1) { out.print("<li><a href='javascript:go(1)'>首頁(yè)</a></li>"); } out.print("<li><a href='javascript:go(" + (curPage - 1) + ")'>上一頁(yè)</a></li>"); } for (int i = start; i <= end; i++) { if (i == curPage) { out.print("<li class='active'><a href='javascript:void(0);'>" + i + "</a></li>"); } else { out.print("<li><a href='javascript:go(" + i + ")'>" + i + "</a></li>"); } } if (curPage < totalPage) { out.print("<li><a href='javascript:go(" + (curPage + 1) + ")'>下一頁(yè)</a></li>"); if (end < totalPage) { out.print("<li><a href='javascript:go(" + totalPage + ")'>尾頁(yè)</a></li>"); } } out.print("<li><a href='javascript:void(0)'>共" + totalPage + "頁(yè)" + this.totalCount + "條</a></li>"); out.print("</ul>"); out.print("</div>"); } } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } /** * 算開(kāi)始索引 * * @param pageNum - * @param pageSize * @return */ public static Integer getStartIndex(Integer pageNum, Integer pageSize) { Integer res = 0; if (pageNum > 0) { res = (pageNum - 1) * pageSize; } return res; } /** * 算結(jié)束索引 -- 方法暫時(shí)未用 * * @param pageSize * @param totalCount * @param totalPage * @param pageNum * @return */ public static Integer getLastIndex(Integer pageSize,Integer totalCount,Integer totalPage,Integer pageNum){ //計(jì)算結(jié)束時(shí)候的索引 Integer lastIndex =0; if( totalCount < pageSize){ lastIndex = totalCount; }else if((totalCount % pageSize == 0) || (totalCount % pageSize != 0 && pageNum < totalPage)){ lastIndex = pageNum * pageSize; }else if(totalCount % pageSize != 0 && pageNum == totalPage){//最后一頁(yè) lastIndex = totalCount ; } return lastIndex; } public Integer getLastIndex() { return lastIndex; } public void setLastIndex(Integer lastIndex) { this.lastIndex = lastIndex; } public void setCurPage(Integer curPage) { this.curPage = curPage; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public void setFormId(String formId) { this.formId = formId; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; }}分頁(yè)action集成類(lèi)-BaseController
package getui.controller;import getui.util.Pager;import java.util.Iterator;import java.util.List;import java.util.Map;import org.springframework.ui.Model;/** * 分頁(yè)控件初始化父類(lèi) * * @author Anny */public class BaseController { //初始化分頁(yè)相關(guān)信息 protected void initPage(Map<String,Object> map, Integer pageNum, Integer pageSize, Integer totalCount){ if(null==pageSize || pageSize.equals("")){ pageSize = 10; //每頁(yè)顯示條數(shù) }// if(pageSize>50){// pageSize = 50;// } Integer totalPage = (totalCount+pageSize-1)/pageSize; if(null==pageNum){ pageNum = 1; }else if(pageNum>totalPage){ pageNum = totalPage; } map.put("startIndex", Pager.getStartIndex(pageNum, pageSize)); map.put("pageNum", pageNum); map.put("totalPage", totalPage); map.put("pageSize", pageSize); map.put("totalCount", totalCount); map.put("lastIndex", Pager.getLastIndex(pageSize,totalCount,totalPage,pageNum)); } //將相關(guān)數(shù)據(jù)放入model protected void initResult(Model model, List<Map<String, Object>> list, Map<String,Object> map){ model.addAttribute("list", list); Iterator it = map.entrySet().iterator(); while(it.hasNext()){ Map.Entry m = (Map.Entry)it.next(); model.addAttribute(m.getKey().toString(), m.getValue()); } } }實(shí)例-Dao
package getui.dao;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.springframework.dao.DataAccessException;import org.springframework.jdbc.core.ResultSetExtractor;import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;import org.springframework.jdbc.core.namedparam.SqlParameterSource;import org.springframework.stereotype.Repository;import getui.controller.GeTuiController;import getui.entity.Branch;import getui.entity.GetuiInfo;@Repository("bookDao")public class BookDao extends BaseDao{ /** 日志記錄 .*/ private static Logger logger = Logger.getLogger(BookDao.class); public int getListCount(){ String sql ="select count(1) from Book"; return super.jdbcTemplate.queryForInt(sql); } public List getListBook(int pageIndex,int pageSize){ String sql = "select * from Book where 1=1 limit "+pageIndex+","+pageSize; // String sql = "select a.*"http:// + " from ("http:// +" select id as nid,name ,price"http:// +" from book"http:// +" order by(id) "http:// +" ) a"http:// +" where nid between "+pageIndex+" and "+pageSize+""; return super.jdbcTemplate.queryForList(sql); } }實(shí)例-service
package getui.service;import getui.dao.BookDao;import getui.dao.ClientInfoDao;import getui.entity.Branch;import getui.entity.GetuiInfo;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Service("bookService")public class BookService { /** 日志記錄 .*/ private static Logger logger = Logger.getLogger(BookService.class); @Autowired private BookDao bookDao; public int getListCount(){ return bookDao.getListCount(); } public List getListBook(int pageIndex,int pageSize){ return bookDao.getListBook(pageIndex, pageSize);// return bookDao.getListBook(); }}實(shí)例-action
package getui.controller;import getui.service.BookService;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;@Controller@RequestMapping(value = "/test")public class TestController extends BaseController { /** 日志記錄 .*/ private static Logger logger = Logger.getLogger(TestController.class); @Autowired private BookService bookService; @RequestMapping("/test.do") public String test(Model model,String type, @RequestParam(required=false) Integer pageNum, @RequestParam(required=false) Integer pageSize) { Map<String,Object> map = new HashMap<String,Object>(); map.put("type", type); Integer totalCount = bookService.getListCount(); this.initPage(map, pageNum, pageSize, totalCount); List list = this.bookService.getListBook(Integer.valueOf(String.valueOf(map.get("startIndex"))), Integer.valueOf(String.valueOf(map.get("pageSize")))); this.initResult(model, list, map); return "book"; } }實(shí)例-JSP
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="page" uri="/WEB-INF/pager.tld"%><% String path = request.getContextPath(); %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!DOCTYPE html><html><head><title>測(cè)試分頁(yè)標(biāo)簽</title> <link href="<%=path%>/css/bootstrap.css" rel="stylesheet"> <link href="<%=path%>/css/bootstrap-responsive.css" rel="stylesheet"> <script type="text/javascript"> function toDel(id){ var url = "<%=path%>/test/del?id=" + id +"&pageNum=${param.pageNum}&pageSize=${param.pageSize}"; window.location.href = url; } </script></head><body> <div class="container"> <c:forEach items="${list}" var="item"> <div class="border-bottom1"> <h3><a href="<%=path%>/test/view?id=${item.id}">${item.name}</a></h3> <p> ${item.content} </p> <p class="text-right muted"> 2013-06-22 22:37 <a href="javascript:toDel('${item.id}');">刪除</a> <a href="<%=path%>/test/toEdit?id=${item.id}&pageNum=${param.pageNum}&pageSize=${param.pageSize}">編輯</a> </p> </div> </c:forEach> <form method="post" id="testForm" action="<%=path%>/test/test.do"> <input type="hidden" name="type" value="${type}"> </form> <page:createPager pageSize="${pageSize}" totalPage="${totalPage}" totalCount="${totalCount}" curPage="${pageNum}" formId="testForm"/> </div> </body></html>實(shí)例-SQL
/*Navicat MySQL Data TransferSource Server : 本地庫(kù)Source Server Version : 50621Source Host : localhost:3306Source Database : testTarget Server Type : MYSQLTarget Server Version : 50621File Encoding : 65001Date: 2016-01-13 12:37:11*/SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `book`-- ----------------------------DROP TABLE IF EXISTS `book`;CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `price` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;-- ------------------------------ Records of book-- ----------------------------INSERT INTO `book` VALUES ('1', '圖書(shū)1', '10');INSERT INTO `book` VALUES ('2', '圖書(shū)2', '11');INSERT INTO `book` VALUES ('3', '圖書(shū)3', '12');INSERT INTO `book` VALUES ('4', '圖書(shū)4', '13');INSERT INTO `book` VALUES ('5', '圖書(shū)5', '14');INSERT INTO `book` VALUES ('6', '圖書(shū)6', '15');INSERT INTO `book` VALUES ('7', '圖書(shū)7', '16');INSERT INTO `book` VALUES ('8', '圖書(shū)8', '17');INSERT INTO `book` VALUES ('9', '圖書(shū)9', '18');INSERT INTO `book` VALUES ('10', '圖書(shū)10', '19');INSERT INTO `book` VALUES ('11', '圖書(shū)11', '11');INSERT INTO `book` VALUES ('12', '圖書(shū)12', '23');INSERT INTO `book` VALUES ('13', '圖書(shū)13', '22');INSERT INTO `book` VALUES ('14', '圖書(shū)14', '22');INSERT INTO `book` VALUES ('15', '圖書(shū)15', '22');INSERT INTO `book` VALUES ('16', '圖書(shū)16', '9');INSERT INTO `book` VALUES ('17', '圖書(shū)17', '10');INSERT INTO `book` VALUES ('18', '圖書(shū)18', '2');INSERT INTO `book` VALUES ('19', '圖書(shū)19', '8');INSERT INTO `book` VALUES ('20', '圖書(shū)20', '78');INSERT INTO `book` VALUES ('21', '圖書(shū)21', '21');INSERT INTO `book` VALUES ('22', '圖書(shū)22', '22');INSERT INTO `book` VALUES ('23', '圖書(shū)23', '23');INSERT INTO `book` VALUES ('24', '圖書(shū)24', '24');實(shí)例圖
測(cè)試示例圖

分頁(yè)融合到自己的代碼中示例圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注