基于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(数据层)的搭建: 相关描述 Ⅰ.服务器与数 ...
随机推荐
- Ruby字符串
在Ruby中的String对象持有和操纵的任意序列的一个或多个字节,通常表示人类语言的字符表示.简单的字符串文本括在单引号中,如 'This is a simple Ruby string liter ...
- 使用Spring整合Quartz轻松完成定时任务
一.背景 上次我们介绍了如何使用Spring Task进行完成定时任务的编写,这次我们使用Spring整合Quartz的方式来再一次实现定时任务的开发,以下奉上开发步骤及注意事项等. 二.开发环境及必 ...
- October 27th Week 44th Thursday 2016
The art of being wise is the art of knowing what to overlook. 智慧之道在于懂得该忽略什么. Always do your best. Wh ...
- php 批量删除
<body><form action="shanchu.php" method="post"><table width=" ...
- Java中的URL类
Java的网络类可以让你通过网络或者远程连接来实现应用.而且,这个平台现在已经可 以对国际互联网以及URL资源进行访问了.Java的URL类可以让访问网络资源就像是访问你本地的文件夹一样方便快捷.我们 ...
- hosts文件权限导致监听无法启动
1.所属系统:2.问题描述:3.解决4.参考???疑点:为什么修改主机名会使hosts文件权限发生改变 1.所属系统: ZHJS2#[/]uname -a HP-UX ZHJS2 B.11.31 U ...
- AOJ 0558 Cheese【BFS】
在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪.有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只能吃一次), ...
- Go语言 Cookie的使用
首先看看Cookie的结构体 type Cookie struct { Name string Value string Path string // optional Domain string / ...
- 关于在django框架里取已登录用户名字的问题
在 views里取值是这样的 request.user.username而在模板页面取值是这样的:{{request.user}} 判断是否通过验证是这样的 {% if request.user.is ...
- 【MongoDB初识】-结合C#简单使用,驱动2.x
public static Students GetEntityByName(string conStr, string userName = "bj") { Students s ...