关于此文

运用第一篇分页的例子,结果以失败告终。在网上又寻找了很多例子。大多是都是这一种。着手开发的项目采用spring MVC框架。符合需求。摘下来,试了一试。
网上的例子总是少一些东西。经过一番折腾。终于搞定了。下面分享出来,供参考。
分页基本逻辑思想懂了,重点是在于怎么实现。怎么实现更好。还需要进一步思考。
配置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>
分页控件-Pager
package getui.util;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/***
* 分页控件
*
* @author Anny
*/
public class Pager extends TagSupport {
private Integer curPage; //当前页码
private Integer totalPage; //总页数
private Integer pageSize = 10; //一页显示的记录数
private Integer totalCount = 0; //记录总数
private String formId; //请求的action name
private Integer lastIndex; //结束索引
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分页的样式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则右侧补齐
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左侧补齐
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)'>首页</a></li>");
}
out.print("<li><a href='javascript:go(" + (curPage - 1) + ")'>上一页</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) + ")'>下一页</a></li>");
if (end < totalPage) {
out.print("<li><a href='javascript:go(" + totalPage + ")'>尾页</a></li>");
}
}
out.print("<li><a href='javascript:void(0)'>共" + totalPage + "页" + this.totalCount + "条</a></li>");
out.print("</ul>");
out.print("</div>");
}
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
/**
* 算开始索引
*
* @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;
}
/**
* 算结束索引 -- 方法暂时未用
*
* @param pageSize
* @param totalCount
* @param totalPage
* @param pageNum
* @return
*/
public static Integer getLastIndex(Integer pageSize,Integer totalCount,Integer totalPage,Integer pageNum){
//计算结束时候的索引
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){//最后一页
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;
}
}
分页action集成类-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;
/**
* 分页控件初始化父类
*
* @author Anny
*/
public class BaseController {
//初始化分页相关信息
protected void initPage(Map<String,Object> map, Integer pageNum, Integer pageSize, Integer totalCount){
if(null==pageSize || pageSize.equals("")){
pageSize = 10; //每页显示条数
}
// 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));
}
//将相关数据放入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());
}
}
}
实例-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.*"
// + " from ("
// +" select id as nid,name ,price"
// +" from book"
// +" order by(id) "
// +" ) a"
// +" where nid between "+pageIndex+" and "+pageSize+"";
return super.jdbcTemplate.queryForList(sql);
}
}
实例-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();
}
}
实例-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";
}
}
实例-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>测试分页标签</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>
实例-SQL
/*
Navicat MySQL Data Transfer
Source Server : 本地库
Source Server Version : 50621
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 50621
File Encoding : 65001
Date: 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', '图书1', '10');
INSERT INTO `book` VALUES ('2', '图书2', '11');
INSERT INTO `book` VALUES ('3', '图书3', '12');
INSERT INTO `book` VALUES ('4', '图书4', '13');
INSERT INTO `book` VALUES ('5', '图书5', '14');
INSERT INTO `book` VALUES ('6', '图书6', '15');
INSERT INTO `book` VALUES ('7', '图书7', '16');
INSERT INTO `book` VALUES ('8', '图书8', '17');
INSERT INTO `book` VALUES ('9', '图书9', '18');
INSERT INTO `book` VALUES ('10', '图书10', '19');
INSERT INTO `book` VALUES ('11', '图书11', '11');
INSERT INTO `book` VALUES ('12', '图书12', '23');
INSERT INTO `book` VALUES ('13', '图书13', '22');
INSERT INTO `book` VALUES ('14', '图书14', '22');
INSERT INTO `book` VALUES ('15', '图书15', '22');
INSERT INTO `book` VALUES ('16', '图书16', '9');
INSERT INTO `book` VALUES ('17', '图书17', '10');
INSERT INTO `book` VALUES ('18', '图书18', '2');
INSERT INTO `book` VALUES ('19', '图书19', '8');
INSERT INTO `book` VALUES ('20', '图书20', '78');
INSERT INTO `book` VALUES ('21', '图书21', '21');
INSERT INTO `book` VALUES ('22', '图书22', '22');
INSERT INTO `book` VALUES ('23', '图书23', '23');
INSERT INTO `book` VALUES ('24', '图书24', '24');
实例图
测试示例图
分页融合到自己的代码中示例图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Bootstrap
# Java
# 分页
# Bootstrap和Java分页实例第一篇
# BootStrap与validator 使用笔记(JAVA SpringMVC实现)
# 使用java基于pushlet和bootstrap实现的简单聊天室
# 值得分享的最全面Bootstrap快速人门案例
# 值得分享的Bootstrap Table使用教程
# 值得分享的bootstrap table实例
# 值得分享的轻量级Bootstrap Table表格插件
# 值得分享和收藏的Bootstrap学习教程
# 值得分享的Bootstrap Ace模板实现菜单和Tab页效果
# 基于Bootstrap的Java开发问题汇总(Spring MVC)
# 自己的
# 都是
# 补齐
# 这一
# 下一页
# 上一页
# 每页
# 尾页
# 相关信息
# 首页
# 试了
# 还需
# 第一篇
# 此文
# 大家多多
# 搞定了
# 条数
# 摘下来
# 在网上
相关文章:
c# 在ASP.NET Core中管理和取消后台任务
制作农业网站的软件,比较好的农业网站推荐一下?
高端云建站费用究竟需要多少预算?
如何快速使用云服务器搭建个人网站?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
全景视频制作网站有哪些,全景图怎么做成网页?
如何选择域名并搭建高效网站?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何正确选择百度移动适配建站域名?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
南平网站制作公司,2025年南平市事业单位报名时间?
如何基于云服务器快速搭建网站及云盘系统?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
招商网站制作流程,网站招商广告语?
建站之星伪静态规则如何正确配置?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
建站之星如何实现五合一智能建站与营销推广?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
安徽网站建设与外贸建站服务专业定制方案
建站DNS解析失败?如何正确配置域名服务器?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
已有域名和空间如何搭建网站?
ppt制作免费网站有哪些,ppt模板免费下载网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站之星后台密码遗忘?如何快速找回?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
建站之星如何优化SEO以实现高效排名?
,交易猫的商品怎么发布到网站上去?
大连 网站制作,大连天途有线官网?
高防服务器租用指南:配置选择与快速部署攻略
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
如何通过服务器快速搭建网站?完整步骤解析
湖北网站制作公司有哪些,湖北清能集团官网?
南宁网站建设制作定制,南宁网站建设可以定制吗?
长沙企业网站制作哪家好,长沙水业集团官方网站?
,在苏州找工作,上哪个网站比较好?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何在Windows环境下新建FTP站点并设置权限?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
网站制作公司,橙子建站是合法的吗?
定制建站价位费用解析与套餐推荐全攻略
建站之星如何通过成品分离优化网站效率?
如何在阿里云完成域名注册与建站?
宝塔面板创建网站无法访问?如何快速排查修复?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
*请认真填写需求信息,我们会在24小时内与您取得联系。