SSM实现简单后台分页
1.简单思路
  
这是最常见的分页格式,分析一下我们需要传什么数据给前端吧! 首先是左边下面的总共几条记录,然后是右边的当前页面,然后就是一些你所需要展示的数据。对了每页显示多少条是不也得控制下,下面的显示页码数,这里显示了五条(1,2,3,4,5),你也可以选择只显示三条(1,2,3)。
2.构造传给页面的POJO
package com.Dy.Pojo; import java.util.List; /**
* 分页信息
*
* @author 小丁同学
*
*/
public class PageInfo<T> {
// 你页面需要展示的集合
private List<T> list;
// 显示的总记录数
private Integer totalNum;
// 总页数
private Integer totalPage; // 当前页
private Integer currentPage;
// 每页显示的数目 (为了防止硬编码可以写在配置文件中)
private Integer pageSize; // 下面两个就是显示的页码 比如start为1 pageNo为5,那么显示的页码数就是1,2,3,4,5
private Integer start;
private Integer pageNo; public PageInfo(Integer totalNum, Integer currentPage, Integer pageSize, Integer pageNo) {
this.totalNum = totalNum;
this.currentPage = currentPage;
this.pageSize = pageSize;
/*this.pageNo = pageNo;*/ // 计算总页数
if (totalNum % this.pageSize == 0)
this.totalPage = totalNum / this.pageSize;
else
this.totalPage = (totalNum / this.pageSize) + 1; this.start = currentPage;
// 比如设置了5条,如果总页数都只有四条,那么肯定都是全是显示哦
if (pageNo+currentPage-1>=this.totalPage)
this.pageNo = pageNo;
else this.pageNo = this.totalPage-currentPage+1;
} public List<T> getList() {
return list;
} public void setList(List<T> list) {
this.list = list;
} public Integer getTotalNum() {
return totalNum;
} public void setTotalNum(Integer totalNum) {
this.totalNum = totalNum;
} public Integer getTotalPage() {
return totalPage;
} public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage;
} public Integer getCurrentPage() {
return currentPage;
} public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
} public Integer getPageSize() {
return pageSize;
} public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
} public Integer getStart() {
return start;
} public void setStart(Integer start) {
this.start = start;
} public Integer getPageNo() {
return pageNo;
} public void setPageNo(Integer pageNo) {
this.pageNo = pageNo;
} }
package com.Dy.Pojo;
public class User {
    private Integer id;
    private String username;
    private String password;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
3.构造Dao(可以使用逆向工程,这里为了展示就手打接口和xml了)
package com.Dy.Mapper;
import java.util.List;
import com.Dy.Pojo.User;
public interface UserMapper {
    public List<User> findAllUsers();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 这里的namespace是为了去绑定那个接口,让xml文件知道对应的是哪个接口 -->
<mapper namespace="com.Dy.Mapper.UserMapper"> <!-- id于接口的名字一样 -->
<select id="findAllUsers" resultType="com.Dy.Pojo.User">
select * from user
</select> </mapper>
4.构造Service
package com.Dy.Service; import com.Dy.Pojo.PageInfo;
import com.Dy.Pojo.User; public interface UserService {
public PageInfo<User> findAllUsersByPage(Integer currentPage,Integer pageSize);
}
package com.Dy.Service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.Dy.Mapper.UserMapper;
import com.Dy.Pojo.PageInfo;
import com.Dy.Pojo.User; @Service
public class UserServiceImpl implements UserService { @Autowired
private UserMapper usermapper; @Override
public PageInfo<User> findAllUsersByPage(Integer currentPage, Integer pageSize) {
List<User> users = usermapper.findAllUsers(); PageInfo<User> pageInfo = new PageInfo<>(users.size(), currentPage, pageSize, 5); //判断是否是最后一页,如果最后一页就显示最后一页的几条,不是最后一页就显示pageSize条
if(currentPage==pageInfo.getTotalPage())
pageInfo.setList(users.subList((currentPage-1)*pageSize, users.size()));
else
pageInfo.setList(users.subList((currentPage-1)*pageSize, (currentPage-1)*pageSize+pageSize));
return pageInfo;
} }
5.JSP部分
<div class="am-fr">
<ul class="am-pagination">
<li ><a href="Users?currentPage=${page.currentPage-1 }">«</a></li>
<c:forEach begin="${page.currentPage }" end="${page.pageNo }" var="i">
<li><a href="Users?currentPage=${i }">${i }</a></li>
</c:forEach>
<li><a href="#">»</a></li>
</ul>
</div>
</div>
<tbody>
<c:forEach items="${page.list }" var="page">
<tr>
<td><input type="checkbox" /></td>
<td>${page.id }</td>
<td>${page.username }</td>
<td>${page.password }</td>
<td>
<div class="am-btn-toolbar">
<div class="am-btn-group am-btn-group-xs">
<button
class="am-btn am-btn-default am-btn-xs am-text-secondary">
<span class="am-icon-pencil-square-o"></span> 编辑
</button>
<button
class="am-btn am-btn-default am-btn-xs am-hide-sm-only">
<span class="am-icon-copy"></span> 复制
</button>
<button
class="am-btn am-btn-default am-btn-xs am-text-danger am-hide-sm-only">
<span class="am-icon-trash-o"></span> 删除
</button>
</div>
</div>
</td>
</tr>
</c:forEach> </tbody>
</table>
6.页面展示



7.后期完善
1.分页逻辑没有考虑增加和删除 不知道会不会有问题
2.PageInfo中的pageNo字段设计的很不合理,最后一页了 就只显示一个 , 任需完善。
3.可以把Service分页逻辑再封装成一个方法,增加代码重用
SSM实现简单后台分页的更多相关文章
- springMVC+spring+MyBatis(SSM)的简单配置
		
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中: Spring是一 ...
 - 基于IDEA采用springboot+Mybatis搭建ssm框架简单demo项目的搭建配置流程
		
一.通过对比可以原始SSM搭建流程,spring boot省去了大量的配置,极大提高了开发者的效率.原始SSM框架搭建流程见博客: https://www.cnblogs.com/No2-explor ...
 - ssm整合简单例子
		
1.首先新建一个maven项目 2.在pom.xml文件中加入以下代码引入包 <properties> <project.build.sourceEncoding>UTF-8& ...
 - ssm框架搭建(下) 简单案例
		
前言 这段时间没有更新博客,一直想做一个基于ssm的简单的项目.经过多次的尝试,终于实现了简单的增删查改功能了. 正文 由于前端的技术不是很熟悉,经过多方的查阅,使用了bootstrap的样式,来使界 ...
 - (原创)ssm sql 例子(freemarker+jsp)
		
ssm整合地址:http://www.cnblogs.com/xiaohuihui96/p/6104351.html 接下讲解一个插入语句的流程和顺带讲解freemarker+jsp视图的整合 初次接 ...
 - ssm+maven 框架整合
		
开篇简言:maven的存在让ssm框架简单了一个量级,BaseDao的存在又让项目简化了一个量级,希望看到这篇文章的都能深入的了解上面两项,好了,进入主题,构造一个ssm框架 1.准备工具 mave ...
 - spring boot简单的小demo(适合于初学者)
		
import com.example.demo2.com.example.dao.ShopDao; import com.example.demo2.com.example.entity.Shops; ...
 - Java基础-SSM之mybatis快速入门篇
		
Java基础-SSM之mybatis快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实你可能会问什么是SSM,简单的说就是spring mvc + Spring + m ...
 - 一个ssm综合小案例-商品订单管理----写在前面
		
学习了这么久,一直都是零零散散的,没有把知识串联起来综合运用一番 比如拦截器,全局异常处理,json 交互,RESTful 等,这些常见技术必须要掌握 接下来呢,我就打算通过这么一个综合案例把这段时间 ...
 
随机推荐
- 2nd week
			
<!DOCTYPE html> <html> <head> <title>用户登录.html</title> <meta http-e ...
 - LCA(最近公共祖先)——Tarjan
			
什么是最近公共祖先? 在一棵没有环的树上,每个节点肯定有其父亲节点和祖先节点,而最近公共祖先,就是两个节点在这棵树上深度最大的公共的祖先节点. 换句话说,就是两个点在这棵树上距离最近的公共祖先节点. ...
 - Servlet案例5:用户登录失败信息回显
			
登录失败信息回显不会的新的一个页面,而是显示在登录页面 一种方法是: 登录页面表单中每个字段后添加<span>标签写入失败信息,利用ajax技术 通过改变<span>标签的di ...
 - 学生成绩管理系统(C++指针、链表、文件及面向对象的运用)
			
学生成绩管理系统 功能页面显示: 实现源码: #include<iostream> #include<fstream> #include<cstring> # ...
 - [git] 本地仓库信息的查询
			
本地仓库信息查询操作 1.1 git status 查看当前暂存区状态 git status 显示当前分支信息: 提交的目的分支信息: git 管理的有修改的文件: 当前仓库未被 git 管理的文 ...
 - numpy中array和asarray的区别
			
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 举例说明: imp ...
 - 06-搭建master集群
			
部署高可用 kubernetes master 集群 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller- ...
 - [每天解决一问题系列 - 0010] ADB Not Responding - Android Studio
			
问题描述: 最近安装了Android Studio v1.0,运行的时候老是这个错误 解决方案: 网上有人说是已经有adb的进程在运行,可是打开任务管理器,找不到对应的adb 进程. 无奈之下,想到a ...
 - Studying
			
美团spark实践:http://tech.meituan.com/spark-in-meituan.html CDH5.6.0-HBase1.0.0:http://archive.cloudera. ...
 - Docker容器的创建、启动、和停止
			
1.容器是独立运行的一个或一组应用,及他们的运行环境.容器是Docker中的一个重要的概念. 2.docker容器的启动有三种方式a.交互方式,基于镜像新建容器并启动例如我们可以启动一个容器,打印出当 ...