加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Bootstrap和Java分页实例第二篇

发布时间:2020-12-18 00:44:06 所属栏目:安全 来源:网络整理
导读:关于此文 运用第一篇分页的例子,结果以失败告终。在网上又寻找了很多例子。大多是都是这一种。着手开发的项目采用spring MVC框架。符合需求。摘下来,试了一试。 网上的例子总是少一些东西。经过一番折腾。终于搞定了。下面分享出来,供参考。 分页基本逻辑

关于此文

  运用第一篇分页的例子,结果以失败告终。在网上又寻找了很多例子。大多是都是这一种。着手开发的项目采用spring MVC框架。符合需求。摘下来,试了一试。

网上的例子总是少一些东西。经过一番折腾。终于搞定了。下面分享出来,供参考。

分页基本逻辑思想懂了,重点是在于怎么实现。怎么实现更好。还需要进一步思考。

配置xml-pager.tld

Pager 1.0 page createPager getui.util.Pager JSP curPage true true java.lang.Integer totalPage true true java.lang.Integer pageSize true true java.lang.Integer totalCount true true java.lang.Integer formId true true java.lang.String

分页控件-Pager

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-end

out.print(buffer.toString());

out.append("

");//page-number-strip
out.print("
    ");//添加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("

  • 首页
  • ");
    }
    out.print("
  • 上一页
  • ");
    }

    for (int i = start; i <= end; i++) {
    if (i == curPage) {
    out.print("

  • " + i + "
  • ");
    } else {
    out.print("
  • " + i + "
  • ");
    }
    }
    if (curPage < totalPage) {
    out.print("
  • 下一页
  • ");
    if (end < totalPage) {
    out.print("
  • 尾页
  • ");
    }
    }
    out.print("
  • 共" + totalPage + "页" + this.totalCount + "条
  • ");
    out.print("
");
out.print("
");
}

} 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

<div class="jb51code">
<pre class="brush:java;">
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

<div class="jb51code">
<pre class="brush:java;">
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

<div class="jb51code">
<pre class="brush:java;">
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

<div class="jb51code">
<pre class="brush:java;">
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

<%@ taglib prefix="page" uri="/WEB-INF/pager.tld"%> <% String path = request.getContextPath(); %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 测试分页标签

<div class="container">
<c:forEach items="${list}" var="item">
<div class="border-bottom1">

/test/view?id=${item.id}">${item.name}

${item.content}

实例-SQL

<div class="jb51code">
<pre class="brush: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');

实例图

测试示例图

分页融合到自己的代码中示例图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读