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. 借助百度云API进行人脸识别

    前言:本篇博客是笔者第一次使用百度云api进行人脸检测,主要内容包括两部分,一是获取接口,二是借助接口进行人脸检测.笔者也是初步了解这方面的内容,也是参考了杂七杂八的博文,内容可能存在错误及其他毛病, ...

  2. 《Effective Java》——读后总结

    这本书在Java开发的行业里,颇有名气.今天总算是粗略的看完了…后面线程部分和序列化部分由于心浮气躁看的不仔细.这个月还剩下一周,慢慢总结消化. 1.静态工厂方法代替构造器 静态工厂方法有名称,能确切 ...

  3. ListBox Dock Fill 总是有空隙的问题

    ListBox Dock设置了Fill, Right等 设计界面如己所愿,但是实际运行时,底部总是有不小的空隙. 原因是ListBox有一个属性: IntergralHeight 默认为True 此属 ...

  4. Django rest framework框架——APIview源码分析

    一.什么是rest REST其实是一种组织Web服务的架构,而并不是我们想象的那样是实现Web服务的一种新的技术,更没有要求一定要使用HTTP.其目标是为了创建具有良好扩展性的分布式系统. 可用一句话 ...

  5. 在请求中存取属性setAttribute&getAttribute方法

    在请求中保存属性: public void setAttribute(String name,Object o) request.setAttribute("mess"," ...

  6. linux的发行版

    Linux的不同版本以及应用领域 1.Linux内核及发行版介绍 <1>Linux内核版本 内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一 ...

  7. 2008R2 无法安装 HDP Apache 系列服务解决方案

    执行下面的 PS 就好了. 特别是 第三行在执行的时候选择 [A]   Set-ExecutionPolicy "AllSigned" Enable-PSRemoting Set- ...

  8. BI中的报表业务功能授权使用"自定义主题"

  9. 20165224 陆艺杰 《Java程序设计》课程总结

    每周作业链接汇总 https://www.cnblogs.com/lyj-/p/8414278.html https://www.cnblogs.com/lyj-/p/8695018.html htt ...

  10. redis原理及实现

    1 什么是redis redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中) 使用java对redis进行操作类似jdbc接口标准对mysql,有各类实现他 ...