昨天下午花了一些时间封装了分页的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就可以使用啦!
分享到:
相关推荐
利用ext3+struts2+hibernate+spring的CRUD+分页这四个框架实现crud,详细说明grid的用法,
ssh 分页,作为了基类。它的子类可以只要继承父类就行了。封装性强。
用SSH做的简易论坛系统,功能算丰富,CRUD,...开始先要对板块插入数据,表可以用hibernate的自动创建,hibernate和spring用的都是注解技术,dao层用了江南白衣的思想,已封装,测试过,我没发现bug,希望对你有所帮助
个人认为由Sun官方支持的EJB规范会越来越流行,此时如果使用基于Annotation的SSH框架很容易转移到Struts+EJB+Spring的项目中,而且使用Annotation,很容易实现0配置,像在这个实例中就一个配置,这样避免了配置文件...
教学-传智播客-项目视频经典之作巴巴运动网106集-28将Web层分页封装成通用模块源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...
教学-传智播客-项目视频经典之作巴巴运动网106集-28将Web层分页封装成通用模块源代码 所需要的jar文件: (一)、Hibernate: 位于 "\hibernate-distribution-3.3.2.GA" 目录下的jar文件: hibernate3.jar 位于 "\...
3.4 实现spring、struts2.x和hibernate框架集成 3.5 小结 第2篇 典型模块开发 第4章 在线文本编辑器(fckeditor) 4.1 分析fckeditor在线文本编辑器 4.2 fckeditor在线文本编辑器初级应用 4.3 ...
软件及安装说明 <br> 本系统是一个Struts+Spring+Hibernate组合开发的博客系统,本系统使用分层体系架构,综合运用struts+spring+hibernate 三大主流开源框架构建,稳定高效、功能强大、易于维护。系统分为四个...
软件及安装说明 <br> 本系统是一个Struts+Spring+Hibernate组合开发的博客系统,本系统使用分层体系架构,综合运用struts+spring+hibernate 三大主流开源框架构建,稳定高效、功能强大、易于维护。系统分为四个...
软件及安装说明 <br> 本系统是一个Struts+Spring+Hibernate组合开发的博客系统,本系统使用分层体系架构,综合运用struts+spring+hibernate 三大主流开源框架构建,稳定高效、功能强大、易于维护。系统分为四个...
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 4. hibernate的性能非常好,因为它是个...
IOIF以EXTJS为前端,以Spring、Struts、Hibernate为后端,整合了Proxool、Log4j、Quartz、Oscache、Castor、Memcached、redis等优秀的开源软件。 支持Tomcat6及Resin3等应用服务器,支持Oracle、MYSQL等数据库。IOIF...
资源功能:分页技术;基础dao,service,action操作的封装;struts2通配符;div布局框架;log4j;ssh流程。 留意: target="_self">改成target="MainBody">便可以真正使用div布局。 本资源是在“ssh框架搭建实例源码...
IOIF以EXTJS为前端,以Spring、Struts、Hibernate为后端,整合了Proxool、Log4j、Quartz、Oscache、Castor、Memcached、redis等优秀的开源软件。 支持Tomcat6及Resin3等应用服务器,支持Oracle、MYSQL等数据库。IOIF...
由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...
erp 这是我近期做的一个erp的系统的源代码
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...
GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以...