【SSH】java真分页实现
来源:互联网 发布:大数据对旅游业的影响 编辑:程序博客网 时间:2024/04/30 09:47
一、前言
分页显示这个功能可以说是非常的实用,毫不夸大的说,只要我们涉及到网页,就会实用到分页显示,无论是动态的还是非动态的,效果都是非常实用的。而且不同的语言有不同的效果,下面小编就向大家介绍一下java的真分页实现。
二、说说分页
在以前小编也实现过使用.NET的分页显示的功能:
【B/S】利用AJAX实现分页
【ASP.NET】Aspnetpager对GridView分页,并导出Excel
【微信平台】艺萌管家APP技术总结(一)——动态分页加载图片
以上的功能是依托在现有的控件,或者是通过代码完成的。综上小编在学习java的时候发现没有相应的已经封装好的控件,所以只能自己手写,总结一下需要下面的几条:
1. 实例化一个PageBean 2. 设置每页显示的记录数 3. 设置每页显示的最大记录数 4. 设置总记录数,通过查询获得总记录数 5. 设置总页数 6. 设置每页显示的数据集合
三、java实现
用java实现分页的功能,需要我们导入PageBean.java类和PageHibernateCallback.java类:
1. 注入page, 获取page在后台
//接收page private Integer page; public void setPage(Integer page) { this.page = page; }
2.写分页查询的方法,然后通过PageBean来获得查询得到的对象。
//查询二级分类的方法 public String findAll(){ PageBean<CategorySecond> pageBean = adminCategorySecondService.findByPage(page); }
3.在B层开始进行分页配置,获取分页的内容
//分页查询二级分类的方法B层-Ares-2016年12月5日18:50:06 public PageBean<CategorySecond> findByPage(Integer page) { //1.实例化一个PageBean PageBean<CategorySecond> pageBean = new PageBean<CategorySecond>(); //2.设置每页显示的记录数 pageBean.setPage(page); //3.设置每页显示的最大记录数 int limit = 10; pageBean.setLimit(limit); //4.设置总记录数,通过查询获得总记录数 int totalCount = adminCategorySecondDao.findCount(); pageBean.setTotalCount(totalCount); //5.设置总页数 int totalPage = 0; if(totalCount % limit ==0){ //如果总页数正好分配到整页数上面 totalPage = totalCount /limit; } else { //如果总页数分配后的比完整的多一个 totalPage = totalCount /limit + 1; } pageBean.setTotalPage(totalPage); //6.设置每页显示的数据集合 int begin = (page -1 )*limit; List<CategorySecond> list =adminCategorySecondDao.findByPage(begin ,limit); pageBean.setList(list); return pageBean; }
4.D层查询的方法
//通过查询获得总记录数 public int findCount() { String hql = "select count(*) from CategorySecond"; List<Long> list = this.getHibernateTemplate().find(hql); if(list!=null && list.size()>0){ return list.get(0).intValue(); } return 0; } //设置每页显示的数据集合 public List<CategorySecond> findByPage(int begin, int limit) { String hql = "form CategorySecond order by csid desc"; List<CategorySecond> list = this.getHibernateTemplate().execute(new PageHibernateCallback<CategorySecond>(hql,null,begin,limit)); return list; }
5.完成U层的方法调用,将查询到的值放到值栈中。
//查询二级分类的方法 public String findAll(){ PageBean<CategorySecond> pageBean = adminCategorySecondService.findByPage(page); //将pageBean中的数据存储到值栈,在页面显示 ActionContext.getContext().getValueStack().set("pageBean",pageBean ); return "findAll"; }
6.查询到后,需要在Struts中配置网页跳转
<!-- 配置后台二级分类管理的ACtion --> <action name="adminCategorySecond_*" class="adminCategorySecondAction" method="{1}" > <result name="findAll">/admin/categorysecond/list.jsp</result> </action>
7.在页面显示
<table cellSpacing="1" cellPadding="0" width="100%" align="center" bgColor="#f5fafe" border="0"> <TBODY> <tr> <td class="ta_01" align="center" bgColor="#afd1f3"> <strong>二级分类 列 表</strong> </TD> </tr> <tr> <td class="ta_01" align="right"> <button type="button" id="add" name="add" value="添加" class="button_add" onclick="addCategory()">添加</button> </td> </tr> <tr> <td class="ta_01" align="center" bgColor="#f5fafe"> <table cellspacing="0" cellpadding="1" rules="all" bordercolor="gray" border="1" id="DataGrid1" style="BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; WIDTH: 100%; WORD-BREAK: break-all; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: #f5fafe; WORD-WRAP: break-word"> <tr style="FONT-WEIGHT: bold; FONT-SIZE: 12pt; HEIGHT: 25px; BACKGROUND-COLOR: #afd1f3"> <td align="center" width="18%"> 序号 </td> <td align="center" width="17%"> 二级分类名称 </td> <td width="7%" align="center"> 编辑 </td> <td width="7%" align="center"> 删除 </td> </tr> <!-- 通过status里面的count属性获得序号 --> <s:iterator var="cs" value="pageBean.list" status="status"> <tr onmouseover="this.style.backgroundColor = 'white'" onmouseout="this.style.backgroundColor = '#F5FAFE';"> <td style="CURSOR: hand; HEIGHT: 22px" align="center" width="18%"> <s:property value="#status.count"/> </td> <td style="CURSOR: hand; HEIGHT: 22px" align="center" width="17%"> <s:property value="#cs.csname"/> </td> <td align="center" style="HEIGHT: 22px"> <a href="${pageContext.request.contextPath}/adminCategory_edit.action?cid=<s:property value="#c.cid"/>"> <img src="${pageContext.request.contextPath}/images/i_edit.gif" border="0" style="CURSOR: hand"> </a> </td> <td align="center" style="HEIGHT: 22px"> <a href="${pageContext.request.contextPath}/adminCategory_delete.action?cid=<s:property value="#c.cid"/>"> <img src="${pageContext.request.contextPath}/images/i_del.gif" width="16" height="16" border="0" style="CURSOR: hand"> </a> </td> </tr> </s:iterator> </table> </td> </tr> <tr align="center"> <td colspan="4"> 第<s:property value="pageBean.page"/>/<s:property value="pageBean.totalPage"/>页 <s:if test="pageBean.page != 1"> <a href="${pageContext.request.contextPath }/adminCategorySecond_findAll.action?page=1">首页</a> | <a href="${pageContext.request.contextPath }/adminCategorySecond_findAll.action?page=<s:property value="pageBean.page-1"/>">上一页</a> | </s:if> <s:if test="pageBean.page != pageBean.totalPage"> <a href="${pageContext.request.contextPath }/adminCategorySecond_findAll.action?page=<s:property value="pageBean.page+1"/>">下一页</a> | <a href="${pageContext.request.contextPath }/adminCategorySecond_findAll.action?page=<s:property value="pageBean.totalPage"/>">尾页</a> </s:if> </td> </tr> </TBODY> </table>
附:PageBean.java类:
package cn.itcast.shop.utils;import java.util.List;/*分页类封装 * 2016年11月14日21:59:28 * Ares * */public class PageBean<T> { private int page; private int totalCount; private int totalPage; private int limit; private List<T> list; public int getPage() { return page; } public void setPage(int page) { this.page = page; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getTotalPage() { return totalPage; } public void setTotalPage(int totalPage) { this.totalPage = totalPage; } public int getLimit() { return limit; } public void setLimit(int limit) { this.limit = limit; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; }}
附:PageHibernateCallback.java类:
package cn.itcast.shop.utils;import java.sql.SQLException;import java.util.List;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.orm.hibernate3.HibernateCallback;public class PageHibernateCallback<T> implements HibernateCallback<List<T>>{ private String hql; private Object[] params; private int startIndex; private int pageSize; public PageHibernateCallback(String hql, Object[] params, int startIndex, int pageSize) { super(); this.hql = hql; this.params = params; this.startIndex = startIndex; this.pageSize = pageSize; } public List<T> doInHibernate(Session session) throws HibernateException, SQLException { //1 执行hql语句 Query query = session.createQuery(hql); //2 实际参数 if(params != null){ for(int i = 0 ; i < params.length ; i ++){ query.setParameter(i, params[i]); } } //3 分页 query.setFirstResult(startIndex); query.setMaxResults(pageSize); return query.list(); }}
四、小结
学习一定要联系旧知识,加油!每一次都是最后的分析,结果都是很好的加油!
0 0
- 【SSH】java真分页实现
- SSH分页技术实现
- ssh实现分页显示
- SSH的分页实现
- SSH分页实现
- ssh实现查询分页
- SSH实现分页功能
- ssh实现分页查询
- ssh实现分页功能
- ssh分页的实现
- SSH:分页实现
- Java/SSH分页组件
- 【Hibernate】Hibernate真分页实现
- Java分页查询(真分页)
- SSH分页(Hibernate实现简单分页查询)
- SSH分页(Hibernate实现简单分页查询)
- SSH分页(Hibernate实现简单分页查询)
- SSH中分页的实现
- OSI七层模型
- [算法]Floyd-Warshall算法理解
- WIN7中全新安装WIN7
- POJ3268————Silver Cow Party(最短路)
- Android UiAutomator环境配置与编译运行
- 【SSH】java真分页实现
- 51nod 1057 N的阶乘
- Android中App启动优化
- Cocos发布Apk失败
- Category和Extension的区别
- Linux makefile 教程 非常详细,且易懂
- PS之通道和蒙版
- spark处理mongodb数据(python版)
- 2013cvpr的总结