在拜读了各位大牛的博客后,加以修改和添加总算是借鉴出了一个可行的分页实现。(●'◡'●)

话不多说,先贴两张效果图吧

接下来是实现代码:

pagingDAOImpl.java

public class pagingDAOImpl implements pagingDAO{

        public List<PagingTest> getPerPageList(String hql, int firstResult, int pageSize)
{
Session session = HibernateSessionFactory.getSession();
Transaction tx = null;
List<PagingTest> list = null; try
{
tx = session.beginTransaction(); Query query = session.createQuery(hql).setFirstResult(firstResult).setMaxResults(pageSize); list = query.list(); tx.commit(); }
catch (Exception e)
{
if(tx != null)
{
tx.rollback();
} e.printStackTrace();
}
finally
{
session.close();
} return list;
} @Override
public int getTotalRows(String hql) {
Session session = HibernateSessionFactory.getSession();
Transaction tx = null;
int totalRows = 0;
try
{
tx = session.beginTransaction(); Query query = session.createQuery(hql); totalRows = query.list().size(); tx.commit(); }
catch (Exception e)
{
if(tx != null)
{
tx.rollback();
} e.printStackTrace();
}
finally
{
session.close();
} return totalRows;
}
}

pagingServiceImpl.java

public class pagingServiceImpl implements pagingService {
private pagingDAO pagingDAO = new pagingDAOImpl(); /**
* pageSize为每页显示的记录数
* page为当前显示的网页
*/ public PageBean getPageBean(int pageSize, int page)
{
PageBean pageBean = new PageBean(); String hql = "from PagingTest"; int totalRows = pagingDAO.getTotalRows(hql); int totalPage = pageBean.getTotalPages(pageSize, totalRows); int currentPage = pageBean.getCurPage(page); int firstResult = pageBean.getCurrentPageFirstResult(pageSize, currentPage); List<PagingTest> list = pagingDAO.getPerPageList(hql, firstResult, pageSize); pageBean.setList(list);
pageBean.setTotalRows(totalRows);
pageBean.setCurrentPage(currentPage);
pageBean.setTotalPage(totalPage); return pageBean;
}
}

PageBean.java

public class PageBean
{
private List<PagingTest> list; //通过hql从数据库分页查询出来的list集合 private int totalRows; //总记录数 private int totalPage; //总页数 private int currentPage; //当前页 public List<PagingTest> getList()
{
return list;
} public void setList(List<PagingTest> list)
{
this.list = list;
} public int getTotalRows()
{
return totalRows;
} public void setTotalRows(int totalRows)
{
this.totalRows = totalRows;
} public int getTotalPage()
{
return totalPage;
} public void setTotalPage(int totalPage)
{
this.totalPage = totalPage;
} public int getCurrentPage()
{
return currentPage;
} public void setCurrentPage(int currentPage)
{
this.currentPage = currentPage;
} /**
* 得到总页数
* @param pageSize 每页记录数
* @param totalRows 总记录数
* @return 总页数
*/
public int getTotalPages(int pageSize, int totalRows)
{
int totalPage = (totalRows % pageSize == 0)? (totalRows / pageSize): (totalRows / pageSize) + 1; return totalPage;
} /**
* 得到当前开始记录号
* @param pageSize 每页记录数
* @param currentPage 当前页
* @return
*/
public int getCurrentPageFirstResult(int pageSize, int currentPage)
{
int firstResult = pageSize * (currentPage - 1); return firstResult;
} /**
* 得到当前页, 如果为0 则开始第一页,否则为当前页
* @param page
* @return
*/
public int getCurPage(int page)
{
int currentPage = (page == 0)? 1: page; return currentPage;
} }

PagingAction.java

public class PagingAction extends ActionSupport
{
private pagingService pagingService = new pagingServiceImpl(); private int page; public int getPage()
{
return page;
} public void setPage(int page)
{
this.page = page;
} @Override
public String execute() throws Exception
{
//表示每页显示5条记录,page表示当前网页
PageBean pageBean = pagingService.getPageBean(5, page); ActionContext context=ActionContext.getContext();
Map session=context.getSession(); session.put("pageBean", pageBean); return SUCCESS;
}
public static void main(String[] args) { }
}

以上就是功能实现的相关代码,至于dao,service,HibernateSessionFactory之类的文件就不贴上来了,上面的代码才是精华!

基于struts2和hibernate的分页实现的更多相关文章

  1. struts2+spring+hibernate 实现分页

    在这里要感谢下这位博友发表的博文 http://www.blogjava.net/rongxh7/archive/2008/11/29/243456.html 通过对他代码的阅读,从而自己实现了网页分 ...

  2. 基于struts2和hibernate的登录和注册功能——完整实例

    1.该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2.配置web.xml(Struts2使用) <?xml version="1.0" encod ...

  3. 基于struts2、hibernate、spring、shiro、MySQL的项目开发

    使用maven管理jar包的依赖 < project xmlns = “ http://maven.apache.org/POM/4.0.0 ” xmlns :xsi = “ http://ww ...

  4. 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建

    1. 前言 基于Maven的开发方式开发项目已经成为主流.Maven能很好的对项目的层次及依赖关系进行管理.方便的解决大型项目中复杂的依赖关系.S2SH(Struts2+Spring+Hibernat ...

  5. SSH面试题(struts2+Spring+hibernate)

    struts2 + Spring +hibernate Hibernate工作原理及为什么要用?   原理:   1.读取并解析配置文件   2.读取并解析映射信息,创建SessionFactory ...

  6. 粗浅看Struts2和Hibernate框架

    ----------------------------------------------------------------------------------------------[版权申明: ...

  7. struts2、hibernate的知识点

    以下内容是我在复习struts2.hibernate和spring的时候记下得到,部分书上找不到的内容来自网络 以下是网络部分的原文网站: http://blog.csdn.net/frankaqi/ ...

  8. Struts2 + Spring + Hibernate 通用 Service 和 DAO

    我在 Struts2 + Spring + Hibernate  项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo(bean).使用这两个Service 和 DAO 可以 ...

  9. SSH(Struts2+Spring+Hibernate)框架搭建流程

    添加支持 我先介绍的是MyEclipse9的自带框架支持搭建过程:(完全的步骤 傻瓜式的学习..~) 首先我们来搭建一个Web项目: 一.Hibernate(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...

随机推荐

  1. Ruby字符串

    在Ruby中的String对象持有和操纵的任意序列的一个或多个字节,通常表示人类语言的字符表示.简单的字符串文本括在单引号中,如 'This is a simple Ruby string liter ...

  2. 使用Spring整合Quartz轻松完成定时任务

    一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...

  3. October 27th Week 44th Thursday 2016

    The art of being wise is the art of knowing what to overlook. 智慧之道在于懂得该忽略什么. Always do your best. Wh ...

  4. php 批量删除

    <body><form action="shanchu.php" method="post"><table width=" ...

  5. Java中的URL类

    Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可 以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们 ...

  6. hosts文件权限导致监听无法启动

    1.所属系统:2.问题描述:3.解决4.参考???疑点:为什么修改主机名会使hosts文件权限发生改变 1.所属系统: ZHJS2#[/]uname -a HP-UX ZHJS2 B.11.31 U ...

  7. AOJ 0558 Cheese【BFS】

    在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪.有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只能吃一次), ...

  8. Go语言 Cookie的使用

    首先看看Cookie的结构体 type Cookie struct { Name string Value string Path string // optional Domain string / ...

  9. 关于在django框架里取已登录用户名字的问题

    在 views里取值是这样的 request.user.username而在模板页面取值是这样的:{{request.user}} 判断是否通过验证是这样的 {% if request.user.is ...

  10. 【MongoDB初识】-结合C#简单使用,驱动2.x

    public static Students GetEntityByName(string conStr, string userName = "bj") { Students s ...