仓促把功能进行实现一下  类与类之间也没有进行MVC式分开  重要的是逻辑 记录一下 希望其中的些许代码逻辑对你有用

TUserDaoImpl---dao层的实现
package com.pers.hoobey;import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;import java.util.List;/*** Created by hoobey on 2017/9/7.*/
public class TUserDaoImpl implements TUserDao {@Overridepublic TUser busOper(TUser bean, int oper) {Session s = HibernateSessionFactory.getSession();Transaction tx = s.getTransaction();TUser user = new TUser();try {tx.begin();user = bean;
//evict变为脱管状态,脱管对象通过session的save,update,saveOrUpdate,lock等方法变回持久化对象
            s.evict(bean);if (oper == -1) {s.delete(bean);} else if (oper == 0) {s.update(bean);} else if (oper == 1) {s.save(bean);} else {user = (TUser) s.get(TUser.class, bean.getId());}tx.commit();} catch (Exception ex) {ex.printStackTrace();tx.rollback();//事务回滚return null;}s.evict(bean);s.close();return user;}/*** 使用hibernate提供的分页功能,得到分页显示的数据* select * from t_user limit 0,3;* 0=offset* 3=pageSize*/@SuppressWarnings("unchecked")@Overridepublic List<TUser> queryByPage(String hql, int offset, int pageSize) {Session session = HibernateSessionFactory.getSession();Transaction tx = null;List<TUser> list = null;try {tx = session.beginTransaction();Query query = session.createQuery(hql).setFirstResult(offset).setMaxResults(pageSize);list = query.list();tx.commit();} catch (Exception e) {if (tx != null) {tx.rollback();}e.printStackTrace();} finally {HibernateSessionFactory.closeSession();}return list;}/*** 通过hql语句得到数据库中记录总数*/@Overridepublic int getAllRowCount(String hql) {Session session = HibernateSessionFactory.getSession();Transaction tx = null;int allRows = 0;try {tx = session.beginTransaction();Query query = session.createQuery(hql);allRows = query.list().size();tx.commit();} catch (Exception e) {if (tx != null) {tx.rollback();}e.printStackTrace();} finally {HibernateSessionFactory.closeSession();}return allRows;}
}

2.PageBean--每一页显示的信息内容
package com.pers.hoobey;
import java.util.List;
/*** Created by hoobey on 2017/9/7.* (每一页所需要的内容都存放在这个PageBean里面),里面用来存放网页每一页显示的内容*/
public class PageBean {private List<TUser> list; //通过hql从数据库分页查询出来的list集合private int allRows; //总记录数private int totalPage; //总页数private int currentPage; //当前页/*** 得到总页数** @param pageSize 每页记录数* @param allRows  总记录数* @return 总页数*/public int getTotalPages(int pageSize, int allRows) {int totalPage = (allRows % pageSize == 0) ? (allRows / pageSize) : (allRows / pageSize) + 1;return totalPage;}/*** 得到当前开始记录号** @param pageSize    每页记录数* @param currentPage 当前页* @return*/public int getCurrentPageOffset(int pageSize, int currentPage) {int offset = pageSize * (currentPage - 1);return offset;}/*** 得到当前页, 如果为0 则开始第一页,否则为当前页** @param page* @return*/public int getCurPage(int page) {int currentPage = (page == 0) ? 1 : page;return currentPage;}public List<TUser> getList() {return list;}public void setList(List<TUser> list) {this.list = list;}public int getAllRows() {return allRows;}public void setAllRows(int allRows) {this.allRows = allRows;}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;}}

3.TUserServiceImpl---service层实现
package com.pers.hoobey;import java.util.Iterator;
import java.util.List;/*** Created by hoobey on 2017/9/7.*/
public class TUserServiceImpl implements TUserService {private TUserDaoImpl tUserDaoImpl = new TUserDaoImpl();/*** pageSize为每页显示的记录数* page为当前显示的页数 从0开始*/@Overridepublic PageBean getPageBean(int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from TUser limit ";int allRows = tUserDaoImpl.getAllRowCount(hql);//总记录数int totalPage = pageBean.getTotalPages(pageSize, allRows);//总页数int currentPage = pageBean.getCurPage(page);//当前页int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);//当前页是  从1开始 要减去1  默认从0开始

//此处就隐含了分页查询  比对 select * from user limit "+(pageNo-1)*pageSize+","+pageSize;List<TUser> list = tUserDaoImpl.queryByPage(hql, offset, pageSize);/*打印输出看一波  非常正确 所有的数据都存进了pageBean*/Iterator<TUser> iterator = list.iterator();while(iterator.hasNext()){System.out.println("查询当前分页显示的数据是:"+iterator.next().toString());}System.out.println("总记录数:"+allRows);System.out.println("当前页面是:"+currentPage);System.out.println("总页数是:"+totalPage);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}
}

4.TUserAction--action的定义
package com.pers.hoobey;import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import org.hibernate.Criteria;
import org.hibernate.Session;import javax.servlet.http.HttpServletRequest;
import java.util.List;public class TUserAction extends ActionSupport {private static final long serialVersionUID = 1L;private TUser user;private List<TUser> dataobject;//保存所有TUser数据集合
TUserDaoImpl tUserDaoImpl = new TUserDaoImpl();TUserServiceImpl tUserServiceImpl = new TUserServiceImpl();private int page;//查询所有public String execute() throws Exception {Session session = HibernateSessionFactory.getSession();Criteria query = session.createCriteria(TUser.class);this.dataobject = (List<TUser>)query.list();for(TUser user : dataobject){System.out.println("id="+user.getId()+"name="+user.getName());}session.close();return SUCCESS;}// 增加数据public String addLine() throws Exception {System.out.print(user.getName());// user里面有内容user = tUserDaoImpl.busOper(user, 1);if (user == null)return ERROR;return SUCCESS;}//修改数据public String updLine() throws Exception{user= tUserDaoImpl.busOper(user, 0);if(user==null) return ERROR;return SUCCESS;}    //删除数据public String delLine() throws Exception{user= tUserDaoImpl.busOper(user, -1);//设计的很巧妙if(user==null) return ERROR;return SUCCESS;}//当前页数显示数据public String PageAll() throws Exception{//表示每页显示3条记录,page表示当前网页System.out.println("点击首页链接,进来了,返回出pageBean对象");PageBean pageBean = tUserServiceImpl.getPageBean(3, page);System.out.println(page);HttpServletRequest request = ServletActionContext.getRequest();request.setAttribute("pageBean", pageBean);//通过struts.xml的配置把pageBean值送到jsps/Alldata.jspreturn SUCCESS;}public TUser getUser() {return user;}public void setUser(TUser user) {this.user = user;}public List<TUser> getDataobject() {return dataobject;}public void setDataobject(List<TUser> dataobject) {this.dataobject = dataobject;}public int getPage() {return page;}public void setPage(int page) {this.page = page;}
}

5.Alldata.jsp--页面信息显示
<%@ page language="java" import="java.util.*,com.pers.hoobey.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%TUser user = new TUser();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><script type="text/javascript">function validate() {var page = document.getElementsByName("page")[0].value;if (page > <s:property value="#request.pageBean.totalPage"/>) {alert("你输入的页数大于最大页数,页面将跳转到首页!");window.document.location.href = "TUserAction";return false;}return true;}</script>
</head>
<body>HQL 查询结果显示如下:<h1><font color="blue">分页查询</font></h1><hr><br><table align="center"><tr><td>序号</td><td>姓名</td><td>操作1</td><td>操作2</td></tr><%--#request.pageBean.list  数据从TUserServiceImpl获取存入到PageBean--%><s:iterator value="#request.pageBean.list" id="tUser"><tr><td><s:property value="#tUser.id" /></td><td><s:property value="#tUser.name" /></td><!-- 修改不同id对应的数据 --><td><a href="<%=request.getContextPath() %>/edit.jsp?user.id=<s:property value="#tUser.id" />">修改</a></td><td><a href="delline.action?user.id=<s:property value="#tUser.id" />">删除</a></td></tr></s:iterator></table>
<%--进行分页的页面布局--%><center><font size="5">共<font color="red"><s:property value="#request.pageBean.totalPage" /></font>页 </font>&nbsp;&nbsp;<font size="5">共<font color="red"><s:property value="#request.pageBean.allRows" /></font>条记录</font><br><br><s:if test="#request.pageBean.currentPage == 1">首页&nbsp;&nbsp;&nbsp;上一页</s:if><s:else><%--进入此展示页面 必须点击首页链接  才会触动action去执行逻辑函数--%><a href="TUserAction.action">首页</a>&nbsp;&nbsp;&nbsp;<a href="TUserAction.action?page=<s:property value="#request.pageBean.currentPage - 1"/>">上一页</a></s:else><s:if test="#request.pageBean.currentPage != #request.pageBean.totalPage"><a href="TUserAction.action?page=<s:property value="#request.pageBean.currentPage + 1"/>">下一页</a>&nbsp;&nbsp;&nbsp;<a href="TUserAction.action?page=<s:property value="#request.pageBean.totalPage"/>">尾页</a></s:if><s:else>下一页&nbsp;&nbsp;&nbsp;尾页</s:else></center><br><center><form action="TUserAction" οnsubmit="return validate();"><font size="4">跳转至</font><input type="text" size="2" name="page">页<input type="submit" value="跳转"></form></center>
</body>
</html>

hibernate和struts实现分页相关推荐

  1. hibernate和struts2实现分页功能

    1.DAO层接口的设计,定义一个PersonDAO接口,里面声明了两个方法: public interface PersonDAO {public List<Person> queryBy ...

  2. 使用hibernate和struts2实现分页功能

    想着每天能学个新东西,今天准备了这个hibernate+struts2实现页面的分页功能,在这里,首先要感谢 http://www.blogjava.net/rongxh7/archive/2008/ ...

  3. 解决hibernate对Sql Server分页慢的问题

    解决hibernate对Sql Server分页慢的问题 参考文章: (1)解决hibernate对Sql Server分页慢的问题 (2)https://www.cnblogs.com/firstd ...

  4. struts实现分页_在TensorFlow中实现点Struts

    struts实现分页 If you want to get started on 3D Object Detection and more specifically on Point Pillars, ...

  5. 主题:Hibernate/Spring/Struts架构使用OpenSessionInView的问题

    今天有一个朋友问了我一个问题,他使用的是Hibernate/Spring/Struts架构,配置使用Spring的 OpenSessionInView Filter,但是发现不生效,lazy的集合属性 ...

  6. mysql智能停车场,智能停车场管理系统设计与实现(Hibernate和Struts,MySQL)

    智能停车场管理系统设计与实现(Hibernate和Struts,MySQL)(论文11800字,程序代码,MySQL数据库) 摘要:本论文旨在设计一款停车管理系统.本系统基于J2EE标准,采用B/S架 ...

  7. 基于hibernate和struts的网上书店系统的设计与实现

    技术:Java.JSP等 摘要: 在互联网快速发展的带动下,电子商务也得到了快速发展.本设计实现的是一个简单的B2C网上书店系统即卖书的电子商务网站,本论文就此网上书店系统进行详细全面的论述. 本设计 ...

  8. hibernate、struts、spring mvc的作用

    Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久 ...

  9. myeclipse 中解决Hibernate 和Struts 2的冲突

    在新建一个项目的时候,如果一个项目中新建一个Hibernate 同时也新建一个Struts  2,那么就会发生冲突. 因为 Hibernate 自带的antlr-2.7.6和Struts  2自带an ...

最新文章

  1. 探索Java语言与JVM中的Lambda表达式
  2. 6、 restful API
  3. 《ASP.NET Core 3 框架揭秘(上下册)》送书结果公告
  4. 【C#】byte[]数据转化相关操作
  5. 如何编制试算平衡表_试算平衡表的编制
  6. debian分区方案(就这个看着靠谱点)转
  7. cognos ibm 收购_IBM Cognos与Linux上的Sterling Selling and Fulfillment Suite集成
  8. 你还发现了CSDN那些变化
  9. springboot + vue开发环境搭建
  10. cad插入块_CAD中的块,用得好,画图快人一步!
  11. 固态硬盘是什么接口_固态硬盘都有哪些接口,是否通用吗?
  12. tensorflow(gpu) win10安装 1060显卡驱动
  13. 一线协议—ds18b20
  14. 临湘东经子午线经度_地区经度查询_实用查询工具大全 - Powered by Senlon!
  15. 华钜同创:拯救你的亚马逊销量!你需要知道这些技巧
  16. 如何使用真机测试运行HarmonyOS应用
  17. unity3D用什么语言开发好?
  18. 一些需要用到的latex语句
  19. python的字符串切片操作
  20. string find的用法详解

热门文章

  1. T-SQL select语句连接两个表
  2. ES6-ES11新特性_ECMAScript_简单介绍---JavaScript_ECMAScript工作笔记001
  3. 持续集成部署Jenkins工作笔记0010---创建工程并配置源码管理
  4. IOS工作笔记003---windows给VmWare虚拟机OS系统安装xcode
  5. 教大家多个域名绑定一个空间的解决办法,原创,自己已经测试过了,完全可以绕过杀毒软件,以及空间商.
  6. 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset
  7. java 杭电1237简单计算器
  8. java基础案例教程试题,Java基础案例教程-中国大学mooc-试题题目及答案
  9. python编程(pdb调试)
  10. 用汇编的眼光看C++(开篇)