基于struts2和hibernate的分页实现
在拜读了各位大牛的博客后,加以修改和添加总算是借鉴出了一个可行的分页实现。(●'◡'●)
话不多说,先贴两张效果图吧


接下来是实现代码:
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的分页实现的更多相关文章
- struts2+spring+hibernate 实现分页
在这里要感谢下这位博友发表的博文 http://www.blogjava.net/rongxh7/archive/2008/11/29/243456.html 通过对他代码的阅读,从而自己实现了网页分 ...
- 基于struts2和hibernate的登录和注册功能——完整实例
1.该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2.配置web.xml(Struts2使用) <?xml version="1.0" encod ...
- 基于struts2、hibernate、spring、shiro、MySQL的项目开发
使用maven管理jar包的依赖 < project xmlns = “ http://maven.apache.org/POM/4.0.0 ” xmlns :xsi = “ http://ww ...
- 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
1. 前言 基于Maven的开发方式开发项目已经成为主流.Maven能很好的对项目的层次及依赖关系进行管理.方便的解决大型项目中复杂的依赖关系.S2SH(Struts2+Spring+Hibernat ...
- SSH面试题(struts2+Spring+hibernate)
struts2 + Spring +hibernate Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory ...
- 粗浅看Struts2和Hibernate框架
----------------------------------------------------------------------------------------------[版权申明: ...
- struts2、hibernate的知识点
以下内容是我在复习struts2.hibernate和spring的时候记下得到,部分书上找不到的内容来自网络 以下是网络部分的原文网站: http://blog.csdn.net/frankaqi/ ...
- Struts2 + Spring + Hibernate 通用 Service 和 DAO
我在 Struts2 + Spring + Hibernate 项目开发中总结出了一个Service 和 DAO ,可以用于处理任何的pojo(bean).使用这两个Service 和 DAO 可以 ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程
添加支持 我先介绍的是MyEclipse9的自带框架支持搭建过程:(完全的步骤 傻瓜式的学习..~) 首先我们来搭建一个Web项目: 一.Hibernate(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...
随机推荐
- WPF中运行时使内容可以上下左右被鼠标拖动应该怎么做?
<Window x:Class="testGridSplitter.MainWindow" xmlns="http://schemas.microsoft.com/ ...
- C语言中,头文件和源文件的关系(转)
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句, ...
- Top 命令详解
Top 命令详解 先感受一下top命令的执行结果吧!哈哈-- top - 17:32:34 up 3 days, 8:04, 5 users, load average: 0.09, 0.12, 0. ...
- there's no qt version assigned to this project for platform
VS+Qt编译一个新建的项目报there's no qt version assigned to this project for platform xxx的错误. 解决方案: 打开Qt_vs_add ...
- Python爬虫进阶二之PySpider框架安装配置
关于 首先,在此附上项目的地址,以及官方文档 PySpider 官方文档 安装 1. pip 首先确保你已经安装了pip,若没有安装,请参照 pip安装 2. phantomjs PhantomJS ...
- Win10 UI入门 圆形控件
动态模版绑定 http://blog.csdn.net/XXChen2/article/details/4552554
- (UWP开发)在ListView中通过向右滑动展开汉堡菜单
首先在移动APP开发中,手势滑动已经成为一个必备的技能,无论大大小小的APP都需要拥有手势滑动功能.在Android和iOS操作系统的APP中,手势滑动比较普及.然而由于国内有关UWP应用的教程比较少 ...
- Shell_3 函数
1 函数 函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. 函数返回值,可以显式增加r ...
- VBA实例收集
1.工作表事件:固定制定区域激活,使之不能选择其他区域. Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target. ...
- 【转】TCP协议
TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一 ...