struts2+hibernate(分页实现)

//Dao类中实现了list集合和pagetotal方法

package zjf.strhib.Dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class PageDao {

 public List pageQuery(int pageSize, int pageNow) {

  List list = new ArrayList();
  SessionFactory sessionfactory = new Configuration().configure()
    .buildSessionFactory();
  Session session = sessionfactory.openSession();
  try {
   // session =new
   // Configuration().configure().buildSessionFactory().openSession();
   session.beginTransaction();

   // 得到每页显示的LevTwoInFuUser的对象的集合list
   list = session.createQuery("from user  order by id")
     .setFirstResult(pageNow * pageSize - pageSize)
     .setMaxResults(pageSize).list();
   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   // HibernateUtils.getSessionFactory().close();
   // NewHibernateUtil.closesessicon();
   session.close();
  }
  return list;
 }

 public int pageTotle(int pageSize, int pageNow) {

  int i = 0;
  SessionFactory sessionfactory = new Configuration().configure()
    .buildSessionFactory();
  Session session = sessionfactory.openSession();
  try {
   // session = HibernateUtils.getSessionFactory().getCurrentSession();
   session.beginTransaction();

   // i是查询结果条数
   i = session.createQuery("from user").list().size();

   // 用总的结果条数对每页显示的条数取余,得到总页数
   i = i % pageSize == 0 ? i / pageSize : i / pageSize + 1;

   session.getTransaction().commit();
  } catch (Exception e) {
   e.printStackTrace();
   session.getTransaction().rollback();
  } finally {
   // HibernateUtils.getSessionFactory().close();
   // NewHibernateUtil.closesessicon();
   session.close();
  }
  return i;
 }
}
//Pagequery中实现了Dao接口

package zjf.strhib.action;

import java.util.List;

import zjf.strhib.Dao.PageDao;

public class Pagequery {
 private List list;
    private int pageNow = 1 ; //初始化为1,默认从第一页开始显示
    private int pageSize = 2 ; //每页显示3条记录
    private int pageTotle= 1 ;//总页数
   
    private PageDao pageDao = new PageDao () ;
   
    public List getList() {
  return list;
 }
 public void setList(List list) {
  this.list = list;
 }
 public int getPageNow() {
  return pageNow;
 }
 public void setPageNow(int pageNow) {
  this.pageNow = pageNow;
 }
 public int getPageSize() {
  return pageSize;
 }
 public void setPageSize(int pageSize) {
  this.pageSize = pageSize;
 }
 public int getPageTotle() {
  return pageTotle;
 }
 public void setPageTotle(int pageTotle) {
  this.pageTotle = pageTotle;
 }
 
 public String fenye(){
   //得到每页显示的对象的集合list
        list  = pageDao.pageQuery(pageSize, pageNow);
        
        //得到总页数pageTotle
        pageTotle=pageDao.pageTotle(pageSize, pageNow);
        
        return "success";
 }
}
//Page页面显示

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <SCRIPT type="text/javascript" src="js/calendar.js"></SCRIPT>
  <base href="<%=basePath%>">
  <title>分页</title>
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="cache-control" content="no-cache">
  <meta http-equiv="expires" content="0">
  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  <meta http-equiv="description" content="This is my page">
 </head>
 <body>
  <table border="1">
   <tr>
    <th>
     用户编号
    </th>
    <th>
     真实姓名
    </th>

   </tr>

   <!-- 迭代查询 -->
   <s:iterator value="list">
    <tr>
     <td>
      <s:property value="name" />
     </td>
     <td>
      <s:property value="password" />
     </td>
    </tr>
   </s:iterator>
  </table>

  <!-- 首页 -->
  <s:url id="url_first" value="page.action">
   <s:param name="pageNow" value="1"></s:param>
  </s:url>
  <!-- 上一页 -->
  <s:url id="url_pre" value="page.action">
   <s:param name="pageNow" value="pageNow-1"></s:param>
  </s:url>
  <!-- 下一页 -->
  <s:url id="url_next" value="page.action">
   <s:param name="pageNow" value="pageNow+1"></s:param>
  </s:url>
  <!-- 末页 -->
  <s:url id="url_last" value="page.action">
   <s:param name="pageNow" value="pageTotle"></s:param>
  </s:url>

  <!-- 如果不是首页则提供首页的链接,如果是首页则不提供链接,以下类似 -->
  <s:if test="pageNow != 1">
            [<s:a href="%{url_first}">首页</s:a>]     
        </s:if>
  <s:else>
            [首页]
        </s:else>

  <s:if test="pageNow>1">
            [<s:a href="%{url_pre}">上一页</s:a>] 
        </s:if>
  <s:else>
            [上一页] 
        </s:else>
  <s:if test=" pageTotle > pageNow ">
            [<s:a href="%{url_next}">下一页</s:a>]
        </s:if>
  <s:else>
            [下一页]
        </s:else>

  <s:if test="pageTotle != pageNow">
            [<s:a href="%{url_last}">末页</s:a>]
        </s:if>
  <s:else>
            [末页]
        </s:else>
  第${pageNow}页/ 共${pageTotle}页
  
 </body>
</html>

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。