1、创建实体类Page.java

@Entity
public class Page {
private int totalRecord;// 表示查询后一共得到多少条结果记录
private int pageSize; // 表示页面一次要显示多少条记录
private int totalPage;// 表示将所有的记录进行分页后,一共有多少页
private int startIndex;// 表示从所有的结果记录中的哪一个编号开始分页查询
private int currentPage; // 表示用户想看的页数 @SuppressWarnings("unchecked")
private List list =null;// list集合是用来装载一个页面中的所有记录的 public Page(int pageNum, int totalRecord) {
this.currentPage = pageNum;
this.totalRecord = totalRecord; this.pageSize = 5;// 设置一页默认显示10条查询记录
this.startIndex = (this.currentPage - 1) * this.pageSize;// 至于为什么this.page要减1,
// 是因为mysql数据库对于分页查询时,得到的所有的查询记录,第一条记录的编号是从0开始。
if (this.totalRecord % this.pageSize == 0) {
this.totalPage = this.totalRecord / this.pageSize;
} else {
this.totalPage = this.totalRecord / this.pageSize + 1;
} } //****此处省略了set和get方法****//
}

2、创建Dao层实现类PageDaoImpl.java

@Repository
public class PageDaoImpl implements PageDao { @Autowired
private JdbcTemplate jdbcTemplate; /*
* 获得总记录数
*/
@SuppressWarnings("deprecation")
public int getTotalRecord(String sql, Object... arrayParameters) {
int totalRecord = jdbcTemplate.queryForInt(sql, arrayParameters);
return totalRecord;
} /*
* 获取当前页数据
*/
@SuppressWarnings("unchecked")
public Page getPage(int pageNum, Class clazz, String sql, int totalRecord, Object... parameters) {
Page page = new Page(pageNum, totalRecord);
sql = sql+" limit "+page.getStartIndex()+","+page.getPageSize();
List list=jdbcTemplate.query(sql, parameters, ParameterizedBeanPropertyRowMapper.newInstance(clazz));
page.setList(list);
return page;
}
}

3、在服务层实现类中添加代码

    public Page getClassifyPage(int pageNum) {
String sql = "select count(*) from t_classify";
int totalRecord = pageDao.getTotalRecord(sql);
sql = "select * from t_classify";
Page page = pageDao.getPage(pageNum, Classify.class, sql, totalRecord);
return page;
}

4、在控制层中添加代码

    @RequestMapping("/list")
public String list(HttpServletRequest request) {
String pageNum=request.getParameter("p")==null?"1":request.getParameter("p");//获取页码,默认1
request.setAttribute("page", classifyService.getClassifyPage(Integer.valueOf(pageNum)));return "admin/classify/list";
}

5、在jsp页面中布局

内容部分:

<c:forEach var="classify" items="${page.list}" varStatus="s">
  <tr class="column_${s.count}">
       <td class="list-text color999">${classify.name}</td>
       <td class="list-text color999">${classify.id}</td>
</tr>
</c:forEach>

分页按钮部分:

       页次:${page.currentPage}/${page.totalPage}&nbsp;每页${page.pageSize}&nbsp;总数${page.totalRecord}&nbsp;&nbsp;&nbsp;&nbsp;
<a href="<c:url value='/admin/user/list.htm?p=1'/>">首页</a>
<c:choose>
<c:when test="${page.currentPage>1}">
<a href="<c:url value='/admin/classify/list.htm?p=${page.currentPage-1}'/>">上一页</a>
</c:when>
<c:otherwise>
<a href="#">上一页</a>
</c:otherwise>
</c:choose>
    <%--
    &nbsp;&nbsp;
    <c:forEach var="i" begin="1" end="${page.totalPage}">
       <a href="<c:url value='/classify.htm?c=${page.list[0].classifyid}&p=${i}'/>">${i}</a>
    </c:forEach>
    --%>
<c:choose>
<c:when test="${page.currentPage<page.totalPage}">
<a href="<c:url value='/admin/classify/list.htm?p=${page.currentPage+1}'/>">下一页</a>
</c:when>
<c:otherwise>
<a href="#">下一页</a>
</c:otherwise>
</c:choose>

SpringMVC框架下实现分页功能的更多相关文章

  1. springMVC框架下JQuery传递并解析Json数据

    springMVC框架下JQuery传递并解析Json数据

  2. springmvc框架下ajax请求传参数中文乱码解决

    springmvc框架下jsp界面通过ajax请求后台数据,传递中文参数到后台显示乱码 解决方法:js代码 运用encodeURI处理两次 /* *掩码处理 */ function maskWord( ...

  3. (转)springMVC框架下JQuery传递并解析Json数据

    springMVC框架下JQuery传递并解析Json数据 json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位.Json的语法非常简单,采用的是键值对表示形式.JSON 可以 ...

  4. 使用Javamelody验证struts-spring框架与springMVC框架下action的訪问效率

    在前文中我提到了关于为何要使用springMVC的问题,当中一点是使用springMVC比起原先的struts+spring框架在效率上是有优势的.为了验证这个问题,我做了两个Demo来验证究竟是不是 ...

  5. DjangoRestFramework框架三种分页功能的实现 - 在DjangoStarter项目模板中封装

    前言 继续Django后端开发系列文章.刚好遇到一个分页的需求,就记录一下. Django作为一个"全家桶"型的框架,本身啥都有,分页组件也是有的,但默认的分页组件没有对API开发 ...

  6. springMVC框架下——通用接口之图片上传接口

    我所想要的图片上传接口是指服务器端在完成图片上传后,返回一个可访问的图片地址. spring mvc框架下图片上传非常简单,如下 @RequestMapping(value="/upload ...

  7. 项目搭建系列之二:SpringMVC框架下配置MyBatis

    1.什么是MyBatis? MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis ...

  8. laravel 框架 下拉分页

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  9. SpringMVC框架下数据的增删改查,数据类型转换,数据格式化,数据校验,错误输入的消息回显

    在eclipse中javaEE环境下: 这儿并没有连接数据库,而是将数据存放在map集合中: 将各种架包导入lib下... web.xml文件配置为 <?xml version="1. ...

随机推荐

  1. 光猫烽火Hg220破解超级口令实用图文教程(亲测)

    1.用光猫背后的useradmin 帐号和密码登录 192.168.1.12.然后下载http://192.168.1.1/backupsettings.conf3.用记事本打开,ctrl+F,查找关 ...

  2. win7下钩子失效解决方案

    win7键盘钩子失效解决方法:1.win开始右键+r(运行) 2.将其输入regedit.exe(注册表管理器),回车打开注册表管理器 3.进入HKEY_LOCAL_MACHINE4.进入到SYS ...

  3. IPython&Jupyter私房手册

    Jupyter是以Ipython为基础,可以极大的方便开发,对于如何使用,网上的资料都不太全.因此决定自己编写一个私房手册方便随时查找. 1. 安装和配置 安装不多说,不想折腾直接安装anaconda ...

  4. 静态库(.a)与动态库(.so)的简明介绍

    静态库(.a)与动态库(.so)的简明介绍 gcc有很多关于静态库,动态库的选项如-l,-L,-fPIC,-shared -Wl,-soname,看着很复杂容易混淆,其实静态库和动态库都是应需而生,只 ...

  5. shell-004:检测机器存活或者网络陡动情况!

    如下图情况,我们监测的就是此数据,当大于50%了,我们就可以设置告警等! #!/bin/bash # 用ping检测一台机器的存活或者网络波动情况 # 检测机器的丢包率来检测网络波动情况!! n=`p ...

  6. GDI绘图写的简单扫雷

    由于没话多少时间,这个扫雷我只实现了主要功能(扫雷功能,递归实现) 废话不多说,直接上代码 using System; using System.Collections.Generic; using ...

  7. linux中tr的功能多多

    功能 通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能. 您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您也可以用它来 ...

  8. JAVA数据结构--选择排序

    选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然 ...

  9. python数据结构与算法之list

    1. 数据结构的操作 作为一种包含元素的数据结构,需要提供一些“标准”操作: 创建和销毁 判断是否空,如果容量有限,还需判断是否满 向结构中加入元素或从中删除 访问结构里的元素 不同的编程语言可能影响 ...

  10. 1129 Recommendation System (25 分)

    Recommendation system predicts the preference that a user would give to an item. Now you are asked t ...