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. spring+hibernate中的事务

    上下文: 从数据库服务器上获取数据可以,保存的时候增加了事务提交,即em.flush方法,报错no transaction in progress 报错信息: no transaction in pr ...

  2. 老男孩Day13作业:ORM学员管理系统

    一.作业需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级      可创建指定班级的上课纪录,注意一节上 ...

  3. Flink生态与未来

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

  4. if __name__ == '__main__'是什么意思?如何理解?看到一个很有用的解答

    小明.py 朋友眼中你是小明(__name__ == '小明'), 你自己眼中你是你自己(__name__ == '__main__'), 你编程很好, 朋友调你去帮他写程序(import 小明, 这 ...

  5. External Tools

    Preferences偏好设置-External Tools External Tools: External Script Editor:外部脚本编辑器,通过此项可以切换您所擅用的脚本的编辑器 Ed ...

  6. PyCharm激活码问题

    1.打开激活窗口 2.选择 Activate new license with License server (用license server 激活) 3.在 License sever addres ...

  7. ASP.NET后台取html控件值方式

    1.Request.Form[“cbName”]: 可以在后台取到所有为name 为的控件的value值 2.可以通过 把html控件的值付给HiddenField,然后后台调用 3.就是自定义属性 ...

  8. json、xml

    json:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...

  9. 使用Swagger生成简单接口文档

    使用swagger通过简单的配置可以生成简单的接口文档: 依赖包: // Swagger2 compile 'io.springfox:springfox-swagger2:2.8.0' compil ...

  10. C++_类和动态内存分配5-使用指向对象的指针

    再探new和delete new为创建的每一个对象的名称字符串分配存储空间,这是在构造函数中进行的: 析构函数使用delete来释放这些内存. 字符串是一个字符数组,所以析构函数使用的是带中括号的de ...