bootstrap table 分页_Java入门007~springboot+freemarker+bootstrap快速实现分页功能

本节是建立在上节的基础上,上一节给大家讲了管理后台表格如何展示数据,但是当我们的数据比较多的时候我们就需要做分页处理了。这一节给大家讲解如何实现表格数据的分页显示。

准备工作

  • 1,项目要引入freemarker和bootstrap,如果不知道怎么引入的,请查看
    《10小时入门java开发03 springboot+freemarker+bootstrap快速实现管理后台》

还是老规矩,看效果图

6790eb9f815990422a1c5860a4b2ddcb.png

可以看出我们实现了如下功能

  • 1,表格数据的展示

  • 2,分页效果的实现

  • 3,上一页和下一页的实现

  • 4,当前选中页码加重颜色

下面来看实现步骤

一,定义表格和分页组件

简单说说代码

  • head里面是引入bootstrap的样式库

  • table定义表格来展示数据

  • ul 里定义分页
    代码如下:

<html>
<head>
    <meta charset="utf-8">
    <title>freemarker+bootstrap学习title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    
    <link rel="stylesheet"href="https://cdn.staticfile.org/twitter-bootstrap/4.1.0/css/bootstrap.min.css">

head>
<body>
<div class="container-fluid">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <table class="table table-bordered table-condensed table-striped">
                <thead>
                <tr>
                    <th>idth>
                    <th>姓名th>
                    <th>微信th>
                    <th colspan="2">操作th>
                tr>
                thead>
                <tbody>

                <#list productInfoPage as productInfo>
                    <tr>
                        <td>${productInfo.id}td>
                        <td>${productInfo.name}td>
                        <td>${productInfo.wechat}td>
                        <td>
                            <#if productInfo.id%2 == 0>
                                <a href="#">下架a>
                            <#else>
                                <a href="">上架a>
                            #if>
                        td>
                    tr>
                #list>
                tbody>
            table>
        div>

        <#--分页-->
        <div class="col-md-12 column">
            <ul class="pagination ">
                <#if currentPage lte 1>
                    <li class="disabled "><a class="page-link" href="#">上一页a>li>
                <#else>
                    <li>
                        <a class="page-link" href="/pageList?page=${currentPage -
                        1}&size=${size}">上一页a>
                    li>
                #if>

                <#list 1..totalPage as index>
                    <#if currentPage == index>
                        <li class="page-item active "><a class="page-link" href="#">${index}a>
                        li>
                    <#else>
                        <li>
                            <a class="page-link" href="/pageList?page=${index}&size=${size}">
                                ${index}a>
                        li>
                    #if>
                #list>

                <#if currentPage gte totalPage>
                    <li class="disabled "><a class="page-link" href="#">下一页a>li>
                <#else>
                    <li>
                        <a class="page-link" href="/pageList?page=${currentPage + 1}&size=${size}">下一页a>
                    li>
                #if>
            ul>
        div>
    div>
div>
body>
html>

二,定义好页面后,我们就来获取数据

同样这里的数据我们先用模拟数据,后面会用数据库里的数据。
看下面代码可以看出来,我们模拟了6条数据,然后每页显示2条数据。

package com.qcl.demo.controller;

import com.qcl.demo.bean.Demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by qcl on 2019-04-29
 * 微信:2501902696
 * desc:freemarker学习
 */
@RestController
public class DemoController {

    /*
     * 分页效果的实现
     * */
    @GetMapping("/pageList")
    public ModelAndView list(@RequestParam(value = "page", defaultValue = "1") Integer page,
                             @RequestParam(value = "size", defaultValue = "2") Integer size,
                             Map<String, Object> map) {
        List demoList = new ArrayList<>(4);
        demoList.add(new Demo(1, "标题1", "编程小石头1", "2501902696"));
        demoList.add(new Demo(2, "标题2", "编程小石头2", "2501902696"));
        demoList.add(new Demo(3, "标题3", "编程小石头3", "2501902696"));
        demoList.add(new Demo(4, "标题4", "编程小石头4", "2501902696"));
        demoList.add(new Demo(5, "标题5", "编程小石头4", "2501902696"));
        demoList.add(new Demo(6, "标题6", "编程小石头4", "2501902696"));
        demoList.add(new Demo(7, "标题7", "编程小石头7", "2501902696"));int start = (page - 1) * 2;int end = start + size;List subList = demoList.subList(start, end);int totalPage = (int) Math.ceil(demoList.size() / size);
        map.put("productInfoPage", subList);
        map.put("totalPage", totalPage);
        map.put("currentPage", page);
        map.put("size", size);return new ModelAndView("demo/list", map);
    }
}

三,启动springboot查看效果。

注意每一页地址栏的url

fcbbfc581f4145c5910d26b2304c0c2c.png
80c8e76bd9ab1b3fb1a01a54bf31552e.png
0eb6bd45d83408fc4ba148782786dc4f.png

可以看出,我们第一次访问时,默认显示第一页,url里没有page和size字段。
访问第2页和第3页时,url里就有了page和size。page是显示那一页,size是每页显示多少条数据。
到这里我们就实现的管理后台的分页效果。

我会把10小时实战入门java系列课程录制成视频,如果你看文章不能很好的理解,可以去看下视频:https://edu.csdn.net/course/detail/23443

编程小石头,码农一枚,非著名全栈开发人员。分享自己的一些经验,学习心得,希望后来人少走弯路,少填坑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1+X web中级 Laravel学习笔记——查询构造器简介及新增、更新、删除、查询数据

一、新增数据 插入多条数据&#xff1a; 二、更新数据 更新某条数据&#xff1a; 自增某字段的值&#xff1a; 自减某字段的值&#xff1a; 自增的同时改变其他字段的值&#xff1a; 三、删除数据 四、查询 查面构造器查面数据 有以下几种方法 get&#xff08;&…

【HTML5】Canvas画布

什么是 Canvas&#xff1f; HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。 画布是一个矩形区域&#xff0c;您可以控制其每一像素。 canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 * 添加 canvas 元素。规定元素的 id、宽度和高度&#xff1a; &l…

SynthText流程解读 - 不看代码不知道的那些事

文章目录1 概述2 流程解读2.1 生成文字mask2.2 plane2xyz的bug2.3 文字上色2.4 图像融合参考资料1 概述 SynthText是OCR领域生成数据集非常经典&#xff0c;且至今看来无人超越的方法。整体可以分为三个大的步骤&#xff0c;分别是生成文字的mask&#xff0c;这里用到了图像的…

python if name main 的作用_Python中if __name__ == '__main__':的作用和原理

if __name__ __main__:的作用 一个python文件通常有两种使用方法&#xff0c;第一是作为脚本直接执行&#xff0c;第二是 import 到其他的 python 脚本中被调用&#xff08;模块重用&#xff09;执行。因此 if __name__ main: 的作用就是控制这两种情况执行代码的过程&#x…

1+X web中级 Laravel学习笔记——Eloquent ORM查询、更新、删除、新增

Eloquent ORM简介 larave1所自带的Eloquent oRM是一个非常优美简洁的ActiveRecord实现&#xff0c;用来实现数据库的操作他的每个数据的表都有对应的模型&#xff08;model&#xff09;用于数据表的交互模型的建立 一、Eloquent ORM的查询 二、Eloquent ORM新增 通过模型新增…

使用复合设计模式扩展持久化的CURD,Select能力

大家可能会经常遇到接口需要经常增加新的方法和实现&#xff0c;可是我们原则上是不建议平凡的增加修改删除接口方法&#xff0c;熟不知这样使用接口是不是正确的接口用法&#xff0c;比如我见到很多的项目分层都是IDAL&#xff0c;DAL&#xff0c;IBLL&#xff0c;BLL&#xf…

1+X web中级 Laravel学习笔记——blade模版

一、blade模版简介 Blade是larave1提供的一个既简单又强大的模版引擎和其他的流行的php模版引擎不一样&#xff0c;blade并不限制你在视图&#xff08;view&#xff09;中使用原生php代码 二、 模版继承 section yield extents parent 三、基本语法以及include的使用 1…

matplotlib 散点图_matplotlib画图 绘制散点图案例

假设通过爬虫你获取到了北京2016年3,10月份 每天白天的最高气温(分别位于列表a,b), 那么此时如何寻找出气温和随时间(天)变化的某种规律? a [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] b [26,26,28,19,21,17,16,19,18,20,…

深度学习基础-1

文章目录0 前言1 图像分类简介1.1 什么是图像分类1.2 图像分类任务的难点1.3 分类任务的评价指标1.3.1 Accuracy1.3.2 Precision和Recall1.3.3 F1 Score1.4 分类图像模型总体框架2 线性分类器2.1 图像的表示方法2.2 Cifar10数据集介绍2.3 分类算法输入2.4 线性分类器3 损失函数…

一、PHP基础——表单传值、上传文件

表单传值 概念: 表单传值即浏览器通过表单元素将用户的选择或者输入的数据提交给后台服务器语言。 为什么使用表单传值? 动态网站&#xff08;Web2.0&#xff09;的特点就是后台根据用户的需求定制数据&#xff0c;所谓的“需求”就是用户通过当前的选择或者输入的数据信息&a…

利用微信搜索抓取公众号文章(转载)

来源&#xff1a;http://www.shareditor.com/blogshow/44 自动收集我关注的微信公众号文章 2016.7.14 更新 搜狐微信增加对referer验证 var page require(webpage).create();page.customHeaders{"referer":"http://weixin.sogou.com/weixin?oq&query关键词…

二、PHP基础——连接msql数据库进行增删改查操作 实战:新闻管理项目

Mysql扩展 PHP针对MySQL数据库操作提供的扩展&#xff1a;允许PHP当做MySQL的一个客户端连接服务器进行操作。 连库基本操作 连接数据库服务器 1&#xff09;资源 mysql_connect(服务器地址&#xff0c;用户名&#xff0c;密码) 连接资源默认也是超全局的&#xff0c;任何地方都…

深度学习基础-2

文章目录0 前言1 全连接神经网络2 激活函数2.1 Sigmoid2.2 Tanh2.3 ReLU2.4 Leaky ReLU3 交叉熵损失4 计算图与反向传播4.1 计算图4.2 梯度消失与梯度爆炸4.3 动量法5 权重初始化5.1 全零初始化5.2 标准随机初始化5.3 Xavier初始化5.4 Kaming初始化6 批归一化7 参考资料0 前言 …

三、PHP基础——HTTP协议 文件编程

一、HTTP协议初步认识 HTTP协议概念 HTTP协议&#xff0c;即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW World Wide Web)服务器之间互相通信的规则&#xff0c;通过因特网传送万维网文档的数据传送协议。 HTTP协议是用于从WWW服务器传…

四、PHP基础——会话技术Cookie 和 Session

会话技术初步认识 会话技术介绍 web会话可简单理解为&#xff1a;用户开一个浏览器&#xff0c;访问某一个web站点&#xff0c;在这个站点点击多个超链接&#xff0c;访问服务器多个web资源&#xff0c;然后关闭浏览器&#xff0c;整个过程称之为一个会话。 HTTP协议的特点是…

python三级菜单设计题目_Python三级菜单

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; 三级菜单:打印省、市、县三级菜单。 可返回上一级&#xff0c;可随时退出程序首先准备基础数据zone{山东:{青…

c#复习-2

输入三个学生的信息学号、姓名、分数从大到小排序 1 using System;2 using System.Collections;3 using System.Collections.Generic;4 using System.Linq;5 using System.Text;6 7 namespace 复习CS8 {9 class Program 10 { 11 struct Student 12 { 1…

long类型python_Python类型long vs C'long long'

I would like to represent a value as a 64bit signed long, such that values larger than (2**63)-1 are represented as negative, however Python long has infinite precision. Is there a quick way for me to achieve this? 解决方案>>> from ctypes import …

Vue中富文本编辑器的使用

基于 Vue 的富文本编辑器有很多&#xff0c;例如官方就收录推荐了一些&#xff1a; https://github.com/vuejs/awesome-vue#rich-text-editing 。 这里我们以 element-tiptap 为例。 GitHub 仓库&#xff1a;https://github.com/Leecason/element-tiptap 在线示例&#xff1a…

Vue项目中使用Echarts(一)

Echarts官方文档 1. 安装Echarts 在cmd命令行输入: npm install echarts --save 2. 代码中使用 注意&#xff1a;import 引入echarts 包时&#xff0c;不要使用 import echarts from ‘echarts’ 而要使用import * as echarts from echarts 否则会报错如下&#xff1a; 3. 页…