ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:61.15KB ,
资源ID:3444377      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3444377.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(SSH基础上分页功能的实现.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

SSH基础上分页功能的实现.docx

1、SSH基础上分页功能的实现SSH基础上分页功能的实现 参考网址1:参考网址2:资料部分借鉴:上节课,我们完成了一个SSH整合的CRUD操作案例,并且完善了其国际化以及校验等内容,这节课,我们继续加以完善,我们知道,当我们查询数据库的内容过多的时候,显示在页面上的内容就比较冗长,所以分页的实现就显的十分有必要了。分页功能的实现是必不可少的,掌握一到两种分页技术在在实际开发前是有必要的,前两天浏览博客的时候看到了一个程序员的博文写的一个分页功能的实现非常好,在这里,分享给大家。在讲解分页功能实现之前,大家必须对分页有一定的了解,知道分页的几个要素:总记录数,每页显示数,共几页,当前页等。在上个例子

2、的基础上我们开始完善我们的程序。1.首先我们先新建立一个接口MemberDao.java,把所需要用到的方法列出来:package cn.zbvc.dao;import java.util.List;import cn.zbvc.bean.User;public interface MemberDao /* 分页查询* param hql 查询条件* param offset 开始记录* param length 一次查询几条记录* return 查询的记录集合*/public List queryForPage(final String hql,final int offset,final

3、int length);/* 查询所有的记录数* param hql 查询条件* return 总记录数*/public int getAllRowCount(String hql);2.然后我们创建其实现类:MemberDaoImpl.javapackage cn.zbvc.dao.impl;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.springframework.orm.hibernate3.support.HibernateDaoSupport;impo

4、rt cn.zbvc.bean.User;import cn.zbvc.dao.MemberDao;public class MemberDaoImpl extends HibernateDaoSupport implements MemberDao /* 查询所有的记录数* param hql 查询条件* return 总记录数*/public int getAllRowCount(String hql) return this.getHibernateTemplate().find(hql).size();/* 分页查询* param hql 查询条件* param offset 开始记录

5、* param length 一次查询几条记录* return 查询的记录集合*/SuppressWarnings(unchecked)public List queryForPage(final String hql, final int offset, final int length) Session session = this.getSession();Query q = session.createQuery(hql);q.setFirstResult(offset);q.setMaxResults(length);List list = q.list();System.out.p

6、rintln(list.size();session.close();return list;大家可以看到,我们一共定义了两个方法,第一个方式是获取数据库表的总记录数,第二个方法是获取我们想要获取的某一页的数据集合,传递的三个参数分别是:查询条件、开始的记录、结束的记录。细心的读者会发现,这个类继承了HibernateDaoSupport类,HibernateDaoSupport是Spring提供的对Hibernate支持的类,在其参数内,我们能像原生的Hibernate一样调用query.setFirstResult(offset)和query.setMaxResults(length)来实

7、现分页查询功能。3.然后我们需要建立一个获取分页信息的pageBean.java:package cn.zbvc.util;import java.util.List;import cn.zbvc.bean.User;public class PageBean private List list; /要返回的某一页的记录列表private int allRow; /总记录数private int totalPage; /总页数private int currentPage; /当前页private int pageSize; /每页的记录数private boolean isFirstPage

8、; /是否为当前第一页private boolean isLastPage; /是否为最后一页private boolean hasPreviousPage; /是否有前一页private boolean hasNextPage; /是否有下一页Set and get方法PageBean中的具体方法:/* 初始化分页信息*/public void init()this.isFirstPage = isFirstPage;this.isLastPage = isLastPage;this.hasPreviousPage = hasPreviousPage;this.hasNextPage = h

9、asNextPage;/* 计算总页数 静态方法* param pageSize 每页的记录数* param allRow 总记录数* return 总页数*/public static int countTatalPage(final int pageSize,final int allRow)int toalPage = allRow % pageSize = 0 ? allRow/pageSize : allRow/pageSize + 1;return toalPage;/* 计算当前页开始的记录* param pageSize 每页记录数* param currentPage 当前第

10、几页* return 当前页开始记录号*/public static int countOffset(final int pageSize,final int currentPage)final int offset = pageSize * (currentPage - 1);return offset;/* 计算当前页,若为0或者请求的URL中没有“?page = ”则用1代替* param page 传入的参数(可能为空,即0 则返回1)* return*/public static int countCurrentPage(int page)final int curpage = (p

11、age = 0 ? 1 : page);return curpage; 4.业务逻辑层的实现:我们现在就只操作User,现在我们在UserService中定义一个方法:/* 分页查询 * param pageSize 每页显示多少记录* param currentPage 当前页* return 封装了分页信息的bean*/public PageBean queryForPage(int pageSize,int page);5.使用UserServiceImpl实现这个具体方法:/* 分页查询 * param pageSize 每页显示多少记录* param currentPage 当前页*

12、 return 封装了分页信息的bean*/public PageBean queryForPage(int pageSize, int page) final String hql = from User user order by user.id; /查询语句int allRow = memberDao.getAllRowCount(hql); /总记录数int totalPage = PageBean.countTatalPage(pageSize, allRow); /总页数final int offset = PageBean.countOffset(pageSize, page);

13、 /当前页开始记录final int length = pageSize; / 每页记录数final int currentPage = PageBean.countCurrentPage(page); / 当前页List list = memberDao.queryForPage(hql, offset, length); /把分页信息保存到Bean当中PageBean pageBean = new PageBean();pageBean.setPageSize(pageSize);pageBean.setCurrentPage(currentPage);pageBean.setAllRow

14、(allRow);pageBean.setTotalPage(totalPage);pageBean.setList(list);pageBean.init();return pageBean;6.然后我们为了不影响上一个例子,我们新创建一个ListUserAction2.java:package cn.zbvc.action.user;import java.util.List;import com.opensymphony.xwork2.ActionSupport;import cn.zbvc.bean.User;import cn.zbvc.service.UserService;imp

15、ort cn.zbvc.util.PageBean;public class ListUserAction2 extends ActionSupport private UserService service;/通过Spring创建业务层对象 使用set方法依赖注入private PageBean pageBean; /封装了分页信息和数据内容的pageBeanprivate List listUser;/用于储存pageBean当中被封装的User信息private int page = 1; /表示从网页中返回的当前页的值 默认为1 表示默认显示第一页内容public int getPag

16、e() return page;public void setPage(int page) this.page = page;public List getListUser() return listUser;public void setListUser(List listUser) this.listUser = listUser;public PageBean getPageBean() return pageBean;public void setPageBean(PageBean pageBean) this.pageBean = pageBean;public void setSe

17、rvice(UserService service) this.service = service;public String execute()throws Exceptionthis.pageBean = service.queryForPage(5, page);/获取封装了分页信息和数据的pageBeanthis.listUser = this.pageBean.getList(); /获取数据return SUCCESS;7.配置applicationContext.xml和struts.xml的相关信息,这里省略了。8.在listUser2.jsp页面中添加分页内容:共条记录 共页 当前第页第一页 上一页第一页a href=listUser2.action?page=上一页a href=listUser2.action?page=下一页a href=listUser2.action?page=最后一页下一页 最后一页9.查看效果:10.思考总结关于分页功能实现,应该是有有很多种解决方法,我介绍的这种解决方案是为了给大家一个范例,让大家明白分页功能实现的原理,其中,大部分的内容借鉴了之前提到的网址。接下来的时间,我会继续学习关于分页功能的其它实现方式,然后分享给大家,另外,还会继续的整理SSH的整合。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1