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. java设计模式 策略

    什么是策略设计模式? 世界永远都在变,唯一不变的就是变本身 举个生活中的例子,小时候玩的游戏中,Sony的PSP提供了统一的卡槽接口,玩家只要更换卡带就可以达到更换游戏的目的,做到了一机多用 特工执行 ...

  2. ajax-3验证

    $("#formBtn").click(function () { // var regName =/^[\u4e00-\u9fa5]{2,10}$/;//姓名只能是汉字切2-10 ...

  3. 如何修改git显示的用户名

    我是这样试了一下,可以改: 输入修改用户名和邮箱: $git config --global user.email "tanteng@gmail.com" $git config ...

  4. 【bzoj4832】[Lydsy1704月赛]抵制克苏恩 期望dp

    Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...

  5. Java_Ant详解(转载)

    Java_Ant详解   1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant ...

  6. ionic3 IPX留海适配

    解决:使用 safe-area-inset-top 等 ios 安全区域变量 + meta 标签中设置 viewport-fit=cover https://github.com/pengkobe/r ...

  7. Qt 学习之路 2(27):渐变

    Qt 学习之路 2(27):渐变 豆子 2012年11月20日 Qt 学习之路 2 17条评论 渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变 ...

  8. 警告"System.Configuration.ConfigurationSettings.AppSettings”已过时,解决办法

    解决办法: 直接把ConfigurationSettings写成ConfigurationManager,但是提示没有ConfigurationManager语句.

  9. python之列表,元组,字典。

    在博主学习列表,元组以及字典的时候,经常搞混这三者.因为他们都是用括号表示的.分别是[],(),{}. 列表(list): [1,'abc',1.26,[1,2,3],(1,2,3),{'age:18 ...

  10. 【算法笔记】B1016 部分A+B

    1016 部分A+B (15 分) 正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​.例如:给定 A=3862767,D​A​​=6,则 A ...