`
jackie9305
  • 浏览: 39091 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

自己封装的一个Strut2+Hibernate+Spring框架的分页功能

    博客分类:
  • SSH
阅读更多

   昨天下午花了一些时间封装了分页的java类,方便自己日后使用,同时有需要分页的朋友们也可以参考,希望对大家能有所帮助。下面是一个Page类的代码。

 

public class Page {
 private int allSize;// 返回的记录数量
 private int page;// 当前页
 private int pageCount;// 页数
 private int startRow;// 从哪条记录开始算
 private static final int pageSize = 3;// 每页显示的记录数

 public Page() {
 }

 // 自定义Page方法传入当前页和总页数
 public Page(int page, int pagecount) {
  this.page = page;
  this.pageCount = pagecount;
 }

 public void setPageValue() {
  if (page == 1) {
   startRow = 0;// 当首页时,记录数从0开始
   // 计算页面数量
   pageCount = (allSize % pageSize == 0) ? (allSize / pageSize) : (allSize / pageSize + 1);
  } else if (page == pageCount) {
   // 当尾页时
   startRow = (pageCount - 1) * pageSize;
  } else {
   startRow = (page - 1) * pageSize;
  }
  // 当没有数据时,显示到第一页
  if (pageCount == 0) {
   pageCount = 1;
  }
 }

 // 获取每页的记录数
 public static int getPageSize() {
  return pageSize;
 }

 // 获取总的页数
 public int getPageCount() {
  return pageCount;
 }

 public int getStartRow() {
  return startRow;
 }

 public void setAllSize(int allSize) {
  this.allSize = allSize;
 }
}

接下来是一个pageUtil类,用于从struts的action中传递参数。

package com.tjn.pageUtil;
public class PageUtil {
/**
 *
 * @param actionPageNow Action中传过来的当前页的值
 * @param actionPageCount Action中传过来的当前页的值
 * @param maxSize 总数量
 * @return Page
 * @author Jackie
 * @date:2008/12/31
 */
 public static Page splitPage(int actionPageNow,int actionPageCount, Integer maxSize) {
  Page page = new Page(actionPageNow, actionPageCount);
  if (actionPageNow == 1) {
   page.setAllSize(maxSize);
  }
  page.setPageValue();//计算
  return page;//返回page对象
 }
}

将这两个类放置到项目中的公共包中,接下来是在你的daoBase的实现类中实现以下两个方法。

/**
 * @method getSize
 * @desc:获取总数
 * @param str
 * 传递进来的是po中的实体类的字符串名称
 *
 */
 public int getSize(String str) {
  // TODO Auto-generated method stub
  String sql="select count(b.id) from "+str+" b";
  return Integer.parseInt(getHibernateTemplate().find(sql).get(0).toString());
 }
 /**
  *params:
  * startRow 起始行数
  * pageSize 每页显示的记录数
  */

 public List<?> queryPageList(Class<?> obj,int startRow, int pageSize) {
  List<?> list= this.getHibernateTemplate().findByCriteria(DetachedCriteria.
    forClass(obj).addOrder(Order.asc("id")),startRow,pageSize);
  return list;
 }
然后在Struts你的业务类的action中设置三个属性,并生成get set 方法。

public int pageNow=1; //初始化为1,默认从第一页开始显示
    public int pageCount;//总页数
 private ProductDao productDao;

要在action的业务类中实现分页,例如我的查询结果中调用以下代码。

public String queryAllProductService() {
  Integer maxSize=this.getProductDao().getSize("Products");
  Page page = PageUtil.splitPage(pageNow,pageCount, maxSize);
  //日志输出
  products = this.getProductDao().queryPageList(Products.class,page.getStartRow(),page.getPageSize());
  pageCount=page.getPageCount();//总页数
  return SUCCESS;
 }

 

在struts2中我的strut.xml配置文件如下:

<action name="ProductList" class="productMgrAction"
   method="queryAllProductService">
   <result>/Backview/product_modi_list.jsp</result>
  </action>

spring中的配置如下

 <bean id="productDao" class="com.tjn.dao.ProductDaoImpl" parent="daoBase">
 </bean>
 <bean id="productMgrAction" class="com.tjn.action.ProductMgrAction" scope="prototype">
 <property name="productDao">
 <ref local="productDao"/>
 </property>
 </bean>

接下来是一个自己编写的page.jsp页面的内容

<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <style type="text/css">
A:link {
 COLOR: #006699;
 TEXT-DECORATION: none
}

A:hover { /*鼠标移上去时字体变粗*/
 COLOR: red;
 font-weight: bold
}

A:visited {
 COLOR: #006699;
 TEXT-DECORATION: none
}

A:active {
 COLOR: #006699;
 TEXT-DECORATION: none
}

td {
 FONT-SIZE: 12px;
 COLOR: #006699;
 font-family: "宋体", "����";
}

.buttoncss {
 font-family: "Tahoma", "����";
 font-size: 9pt;
 color: #003399;
 border: 1px #003399 solid;
 color: 006699;
 BORDER-BOTTOM: #93bee2 1px solid;
 BORDER-LEFT: #93bee2 1px solid;
 BORDER-RIGHT: #93bee2 1px solid;
 BORDER-TOP: #93bee2 1px solid;
 background-color: #e8f4ff;
 CURSOR: hand;
 font-style: normal;
}

.inputcss {
 font-size: 9pt;
 color: #003399;
 font-family: "宋体";
 font-style: normal;
 border-color: #93BEE2 #93BEE2 #93BEE2 #93BEE2;
 border: 1px #93BEE2 solid;
}
</style>
</head>
 <body>
  <s:hidden id="pageCount" name="pageCount"></s:hidden>
  <s:hidden id="pageNowText" name="pageNow"></s:hidden>
  <table  width="100%">
   <tr>
    <td align="center">
     <s:a href="javascript:HomePage()">首页</s:a>
     <s:a href="javascript:PrePage()">上一页</s:a>
     <s:a href="javascript:NextPage()">下一页</s:a>
     <s:a href="javascript:LastPage()">尾页</s:a>
     共
     <font color="red"><s:property value="pageCount" />
     </font>页,当前第
     <font color="red"><s:property value="pageNow" />
     </font>页 转到第
     <input id="inputPage" type="text"
      value='<s:property value="pageNow"/>' size="1" class="inputcss" />
     页
     <span> <input type="button" value="G O"
       onclick="buttonCommit()" class="buttoncss" /> </span>

    </td>
   </tr>
  </table>
  <script language="javascript">
  var page=document.getElementById('pageNowText').value;
  var pageCount=document.getElementById('pageCount').value;
  //首页
  function HomePage(){
   window.location="?pageNow=1";
  }
  //尾页
    function LastPage(){
   window.location="?pageNow="+pageCount+"&pageCount="+pageCount;
  }
  //上一页
    function PrePage(){
        page = page - 1;      
        if(page == 0)     page = 1;
        window.location ="?pageNow="+page+"&pageCount="+pageCount;
    }
    //下一页
    function NextPage(){
      page =parseInt(page)+1; 
      if(page > pageCount) page =pageCount;
       window.location ="?pageNow="+page+"&pageCount="+pageCount;
    }
    //转到第几页
    function buttonCommit(){
     var inputPage=document.getElementById('inputPage').value;
     inputPage=parseInt(inputPage);
     if(inputPage > pageCount){
     inputPage =pageCount;
     }
       window.location ="?pageNow="+inputPage+"&pageCount="+pageCount;
    }
</script>
  </body>
  </html>

在需要分页的jsp页面中,只需要在想放置分页的位置用jsp:include导入page.jsp就可以使用啦!

 

6
1
分享到:
评论

相关推荐

    STRUTS2+HIBERNATE详细的分页实现代码详细的分页实现代码

    下面是一个简化的示例代码片段,展示了如何在Struts2和Hibernate中实现分页功能: ```java // PageTool类定义 public class PageTool { private int pageNum; // 当前页码 private int pageSize; // 每页显示记录...

    ext3+struts2+hibernate+spring的CRUD+分页

    "ext3+struts2+hibernate+spring的CRUD+分页"是一个典型的Java Web开发组合,用于实现全面的数据管理功能。这个组合充分利用了各个框架的优势,提供了一个强大的后端数据处理和前端展示的解决方案。 首先,EXT3是一...

    基于struts2+hibernate3+spring的分页组件

    总的来说,这个项目提供了在Struts2、Hibernate3和Spring框架下实现分页功能的实例,对于学习和掌握Java Web开发,特别是框架集成与分页技术具有很高的参考价值。通过研究这个项目,开发者可以学习到如何在实际项目...

    struts2+hibernate3+spring3分页

    总结,"struts2+hibernate3+spring3分页"项目结合了SSH框架的优势,实现了高效、灵活的后端分页功能,利用MySQL数据库存储数据。开发者可以通过学习这个项目,深入理解如何在实际项目中集成和运用SSH框架,以及如何...

    struts+hibernate+spring框架整合做分页

    在这个项目中,“struts+hibernate+spring框架整合做分页”意味着我们将探讨如何在整合这三大框架的基础上实现一个高效且灵活的分页功能。 首先,Struts框架是MVC(Model-View-Controller)设计模式的一种实现,它...

    Struts+Hibernate+Spring+JS 分页程序(一)

    总结起来,"Struts+Hibernate+Spring+JS 分页程序"实例展示了四个框架如何协同工作,实现Web应用程序的分页功能。Struts处理请求和响应,Hibernate负责数据库操作,Spring作为整体的协调者,JavaScript则为用户提供...

    struts2.0+hibernate+spring分页

    总结来说,"struts2.0+hibernate+spring分页"项目是通过SSH框架的集成,利用Hibernate的ORM能力和Spring的依赖注入,创建了一个基类实现分页功能,其子类可以通过简单继承实现特定业务的分页。这种方式不仅减少了...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    本项目聚焦于Struts2、Spring与Hibernate三大框架的整合应用,旨在构建一个高效、稳定、易于维护的学生成绩管理系统。通过整合这三个框架,系统能够实现用户登录、学生信息管理、学生成绩管理及分页显示等功能。以下...

    Struts+Hibernate+Spring的分页

    总结来说,这个项目展示了如何在Struts、Hibernate和Spring三大框架下实现分页功能,涵盖了前端请求处理、后端分页逻辑以及数据查询的各个方面。无论是SQL还是HQL,都能有效地应用于分页场景,开发者可以根据项目...

    含分页核心源代码 struts2.1 + hibernate3.3 +spring2.5 + 仿Google数字分页

    这是一个基于SSH(Struts2、Hibernate3.3和Spring2.5)框架的项目,其中包含了一个实现仿Google数字分页功能的核心源代码。在这个项目中,开发者利用这些技术来构建一个具有高效分页能力的Web应用,以提高用户体验并...

    Struts1 增删改查+分页

    Struts1是一个经典的Java Web开发框架,由Apache软件基金会维护,它主要负责处理MVC(Model-View-Controller)架构中的Controller部分。在本项目"Struts1 增删改查+分页"中,我们将深入探讨如何利用Struts1实现对...

    struts2+spring+hibernate分页显示完整代码

    本篇文章将详细讲解如何在基于Struts2、Spring和Hibernate的项目中实现分页功能。 首先,我们从DAO层开始。在`MemberDao`接口中,我们定义了两个关键的方法,一个是用于分页查询,另一个是获取所有记录的数量。这两...

    struts+hibernate+spring应用下的实用分页实例

    在基于Struts + Hibernate + Spring(SSH)框架的Web应用程序开发中,数据展示是必不可少的一部分,特别是在需要处理大量数据的情况下,如何有效地进行分页显示成为了一个关键问题。本文将详细介绍如何在SSH框架下...

    struts+spring+hibernate 分页

    Struts、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们各自在Web应用程序的不同层面上发挥作用,共同构建了一个强大的企业级应用开发体系。Struts 主要负责MVC(Model-View-Controller)架构中的控制层...

    Struts+Spring+Hibernate通用分页解决方案

    7. **文件`struts+spring+hibernate通用分页方法.doc`**:这个文档可能包含了具体的实现步骤、代码示例和注意事项,详细阐述如何将Struts、Spring和Hibernate整合起来,构建一个通用的分页功能。读者可以参考文档中...

    使用Struts + Spring + Hibernate完成分页笔记

    综上所述,通过Struts处理用户请求,Spring管理组件和事务,以及Hibernate处理数据库操作,我们可以构建出一个高效、可扩展的分页应用。在这个过程中,Eclipse作为开发环境,提供对Spring和Hibernate的支持,帮助...

    struts2+spring+hibernate分页显示

    总的来说,使用Struts2+Spring+Hibernate实现分页显示,需要综合运用这三个框架的核心特性,通过拦截器处理分页逻辑,Spring管理业务对象和事务,Hibernate处理数据查询。这个过程涉及到前端视图的构建、后端服务的...

    网络硬盘(Struts 2+Hibernate+Spring实现)

    总之,“网络硬盘(Struts 2+Hibernate+Spring实现)”项目涵盖了Java Web开发的多个重要方面,包括MVC架构、ORM、依赖注入、事务管理等,对于想要深入理解Java Web开发的初学者来说,这是一个很好的学习实践案例。

    j2ee中struts+hibernate+spring+pager-taglib分页实例

    本文将详细介绍如何通过Struts+Hibernate+Spring+Pager Taglib实现一个完整的分页功能。 #### MVC架构 本实例遵循MVC(Model-View-Controller)设计模式,具体架构如下: - **视图层**:采用JSP技术,用于展示...

Global site tag (gtag.js) - Google Analytics