springboot+freemarker+bootstrap快速实现分页功能(含java源码)

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

准备工作

1,项目要引入freemarker和bootstrap,如果不知道怎么引入的,请查看《springboot+freemarker+bootstrap快速实现管理后台》

还是老规矩,先看效果图

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

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

<!-- 新 Bootstrap4 核心 CSS 文件 -->

<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>id</th>

<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

* desc:freemarker学习

*/@RestControllerpublic 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<Demo> 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<Demo> 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

可以看出,我们第一次访问时,默认显示第一页,url里没有page和size字段。

访问第2页和第3页时,url里就有了page和size。page是显示那一页,size是每页显示多少条数据。

到这里我们就实现的管理后台的分页效果。

我会把10小时实战入门java系列课程录制成视频,如果你看文章不能很好的理解,可以去看下视频

有任何关于编程的问题都可以私信我,我看到后会及时解答。

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

原文地址:https://www.toutiao.com/article/6685485473185399303/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了spring的事务传播属性REQUIRED_NESTED的原理介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。传统事务中回滚点的使...
今天小编给大家分享的是一文解析spring中事务的传播机制,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获...
这篇文章主要介绍了SpringCloudAlibaba和SpringCloud有什么区别,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Spring Cloud Netfli...
本篇文章和大家了解一下SpringCloud整合XXL-Job的几个步骤。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。第一步:整合pom文件,在S...
本篇文章和大家了解一下Spring延迟初始化会遇到什么问题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。List 坑列表 = new ArrayList(2);...
这篇文章主要介绍了怎么使用Spring提供的不同缓存注解实现缓存的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇...
本篇内容主要讲解“Spring中的@Autowired和@Resource注解怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
今天小编给大家分享一下SpringSecurity怎么定义多个过滤器链的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家
这篇文章主要介绍“Spring的@Conditional注解怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring的@Con...
这篇文章主要介绍了SpringCloudGateway的熔断限流怎么配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringCloud&nb...
今天小编给大家分享一下怎么使用Spring解决循环依赖问题的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
这篇文章主要介绍“Spring事务及传播机制的原理及应用方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Sp...
这篇“SpringCloudAlibaba框架实例应用分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价
本篇内容主要讲解“SpringBoot中怎么使用SpringMVC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习...
这篇文章主要介绍“SpringMVC适配器模式作用范围是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringMVC
这篇“导入SpringCloud依赖失败如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要讲解了“SpringMVC核心DispatcherServlet处理流程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来
今天小编给大家分享一下SpringMVCHttpMessageConverter消息转换器怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以...
这篇文章主要介绍“Spring框架实现依赖注入的原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring框架...
本篇内容介绍了“Spring单元测试控制Bean注入的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下