`
Disney2002
  • 浏览: 53927 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

List 分页封装及结合Struts2使用

阅读更多
1. 核心类:
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.nazca.consult.consultee.web.util.Pager;
import com.opensymphony.xwork2.ActionSupport;

/**
 * 分页使用到的Action,如果其他有分页需要的action继承此Action即可使用分页功能
 * 
 * @author XiaoQuan
 */
public class AbstractListActioin extends ActionSupport {

    private static final long serialVersionUID = -4680224737445304053L;
    private static Log log = LogFactory.getLog(AbstractListActioin.class);

    public Pager makePager(String pageNumber, int total, int pageSize,
            int ListStep) {
        Pager pager = new Pager();
        // 设置总数
        pager.setTotal(total);
        // 设置每页显示多少数据
        pager.setPageSize(pageSize);

        int pageNum = 1;

        if (pageNumber != null) {
            pageNum = Integer.parseInt(pageNumber);
        }

        // 设置当前页
        pager.setCurrentPage(pageNum);

        // 最多显示分页页数
        pager.setListStep(ListStep);

        // 求总页数,ceil(num)取整不小于num
        pager.setPagesCount((int) Math.ceil((double) pager.getTotal()
            / pager.getPageSize()));
        if (pager.getPagesCount() < pageNum) {
            pager.setCurrentPage(pager.getPagesCount());// 如果分页变量大总页数,则将分页变量设计为总页数
        }
        if (pageNum < 1) {
            pager.setCurrentPage(1);
        }

        // 从第几页开始显示分页信息
        pager.setListBegin(pager.getCurrentPage() - (int) Math.ceil((double) pager.getListStep() / 2));
        if (pager.getListBegin() < 1) {
            pager.setListBegin(1);
        }

        // 分页信息显示到第几页
        pager.setListEnd(pager.getCurrentPage() + pager.getListStep() / 2);

        if (pager.getListEnd() > pager.getPagesCount()) {
            pager.setListEnd(pager.getPagesCount());
        }

        List<String> list = new ArrayList<String>();
        
        for (int i = pager.getListBegin(); i < pager.getListEnd(); i++) {
            list.add(i + "");
        }

        pager.setPageList(list);
        return pager;
    }
}


Pager类:
import java.util.List;

/**
 *
 * @author XiaoQuan
 */
@SuppressWarnings("unchecked")
public class Pager {

    private int beginPage;
    private int endPage;
    private int currentPage;
    private int pageSize;
    private int total;
    private int listStep;
    private int listBegin;
    private int listEnd;
    private int pagesCount;
    private List pageList;

    public int getBeginPage() {
        return beginPage;
    }

    public void setBeginPage(int beginPage) {
        this.beginPage = beginPage;
    }

    public int getEndPage() {
        return endPage;
    }

    public void setEndPage(int endPage) {
        this.endPage = endPage;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public int getListStep() {
        return listStep;
    }

    public void setListStep(int listStep) {
        this.listStep = listStep;
    }

    public int getListBegin() {
        return listBegin;
    }

    public void setListBegin(int listBegin) {
        this.listBegin = listBegin;
    }

    public int getListEnd() {
        return listEnd;
    }

    public void setListEnd(int listEnd) {
        this.listEnd = listEnd;
    }

    public int getPagesCount() {
        return pagesCount;
    }

    public void setPagesCount(int pagesCount) {
        this.pagesCount = pagesCount;
    }

    public List getPageList() {
        return pageList;
    }

    public void setPageList(List pageList) {
        this.pageList = pageList;
    }
}



2. 需要使用分页的Action类继承该类
public class GetMyQListAction extends AbstractListActioin {

中间内容略....
//获得page对象,保存到session中
Pager pageP = makePager(getPage(), total,
                Constants.MY_QUESTION_PAGE_N, Constants.LIST_STEP);
            ctx.put("pager", pageP);
}


3.页面添加如下JSP内容即可
<div id="pageNavigator">
	<span> <s:if test="#request.pager.currentPage > 1">
			<s:url id="prePage" action="consult" includeParams="none">
				<s:param name="pages" value="#request.pager.currentPage-1" />
			</s:url>
			<s:a href="#"
				onclick="javascript:GetFavoriteQList(0,%{#request.pager.currentPage-1})">上一页</s:a>
		</s:if> <s:else>
			<span>上一页</span>
		</s:else> </span>
	<span> <s:iterator value="#request.pager.pageList" id="pageList"
			status="pageNum">
			<s:if test="#request.pager.currentPage == #pageList">
				<b>[<s:property value="pageList" />]</b>
			</s:if>
			<s:else>
				<s:a href="#"
					onclick="javascript:GetFavoriteQList(0,%{pageList})">[<s:property
						value="pageList" />]</s:a>
			</s:else>
		</s:iterator> </span>
	<span> <s:if
			test="#request.pager.currentPage != #request.pager.pagesCount">
			<s:url id="nextPage" action="some" includeParams="none">
				<s:param name="pages" value="#request.pager.currentPage+1" />
			</s:url>
			<s:a href="#"
				onclick="javascript:GetFavoriteQList(0,%{#request.pager.currentPage+1})">下一页</s:a>
		</s:if> <s:else>
			<span>下一页</span>
		</s:else> </span>
</div>

分享到:
评论
12 楼 baoq 2009-02-24  
真麻烦 还不如
http://www.iteye.com/topic/317875
11 楼 bruce_andy 2008-07-08  
看看rubbin先生的,业务类写的很好了
10 楼 kjj 2008-07-08  
嗯 ,楼上的见解和我一样,我正在做这个标签,原则上 page类只是一个控制类,指示index和size,action里不宜放太多的业务逻辑啊
9 楼 ray_linn 2008-07-04  
private List pageList;   --- 这个是虾米东东?
8 楼 gaoyuntao2005 2008-07-02  
好, 写的不错。
7 楼 lanhongbo 2008-07-02  
顶 直接打包上传 哈哈
6 楼 zouzou 2008-07-01  
提供源码吧
5 楼 lenj 2008-07-01  
直接打包上传下吧
4 楼 rennuoting 2008-06-30  
能不能提供demo的源代码呢?这样看着很累,自己想实验一下
3 楼 Disney2002 2008-06-29  
function GetList(q, p){
    var url = null;
    switch (q) {
        case 1:
            url = "A.action?page=" + p;
            break;
        default:
            url = "B.action?page=" + p;
    }
    window.scrollTo(0, 0);
    new Ajax.Request(url, {
        method: 'post',
        onSuccess: function(transport){
            var favoriteQList = transport.responseText;
            $("favoriteQ").innerHTML = favoriteQList;
        },
        onCreate: function(){
            $("favoriteQ").innerHTML = $("loadingDiv").innerHTML;
        },
        onFailure: function(){
            $('loadingText').innerHTML = "出错啦";
            $("favoriteQ").innerHTML = $("loadingDiv").innerHTML;
        }
    });
}


q是列表的类型,p 是返回要获取的页数
2 楼 wm920 2008-06-24  
能给我发这个例子么··谢谢··275243125@163.com
1 楼 javaEye_good 2008-06-24  
能不能详细点阿?兄弟。javascript在哪?数据怎么取

相关推荐

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

    根据提供的标题、描述、标签及部分内容,我们可以了解到这篇文章主要探讨的是如何在Struts2与Hibernate框架结合下实现分页功能。接下来将详细解析Struts2与Hibernate如何协作完成这一任务。 ### Struts2与Hibernate...

    struts2分页代码的示例

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    Struts2+jdbc+mysq分页Demo

    在本"Struts2+jdbc+mysql分页Demo"中,我们将探讨如何使用Struts2框架配合JDBC和MySQL数据库实现动态网页的分页功能。 首先,我们需要理解分页的基本概念。分页是将大量数据分割成小块,以便用户可以逐步浏览和处理...

    struts2+MySQL分页(精).

    本文将详细介绍如何利用Struts2框架结合MySQL数据库实现高效的数据分页功能。 #### 二、Struts2框架简介 Struts2是一个基于Java的开源Web应用框架,它继承了Struts1的优点,并对其进行了改进。Struts2采用MVC设计...

    struts2+pager-taglib 实现分页小例子

    总结来说,这个例子展示了如何在Struts2框架下结合Hibernate和Pager-taglib实现一个基本的分页功能。通过理解Action类的职责、Hibernate的数据访问机制以及Pager-taglib的使用方法,我们可以轻松地在实际项目中实现...

    Struts2分页(含mysql)

    本教程将详细讲解如何在Struts2框架中实现分页功能,并结合MySQL数据库进行数据操作。 首先,我们需要理解分页的基本原理。分页是将大量数据分为若干个较小的部分,每个部分称为一页,用户可以逐页浏览,而不需要一...

    Struts2+HIBERNATE实现分页(完整讲解)

    通过上述步骤,我们已经成功地使用Struts2和Hibernate实现了分页功能。在实际开发中,可能还需要考虑性能优化,如缓存策略、查询优化等。对于初学者来说,理解并实践这个过程是掌握Java Web开发的重要一环。不断学习...

    struts1.2实现分页

    总之,Struts1.2实现分页需要结合Action、DAO、数据模型和JSP视图等多个层面进行协调工作,理解并掌握这一过程有助于提升Web应用的性能和用户体验。在实际开发中,还需要根据项目需求进行适当的调整和优化。

    struts2实现分页显示

    下面将详细讲解如何在Struts2框架下实现分页显示。 首先,我们需要理解分页的基本概念。分页是将大量数据分为多个部分(页)进行展示,用户可以逐页浏览,而不是一次性显示所有记录。这通常涉及到两个关键参数:...

    Struts2分页程序

    根据提供的信息,我们可以深入探讨如何在Struts2框架中实现分页功能。Struts2是一个开源的、用于创建企业级Java Web应用的框架。它基于MVC(模型-视图-控制器)架构模式,能够帮助开发者高效地组织代码并简化Web开发...

    hibernate+struts后台分页

    Struts2中的Action类是业务逻辑的入口点,我们可以在这里处理分页请求,然后将结果封装成ModelDriven或ValueStack对象,传递给视图层展示。例如,Action类可能包含以下代码: ```java public class TestAction ...

    struts2中的分页显示

    在具体实现上,Struts2的分页功能可以结合拦截器、Action以及自定义的Taglib来增强其灵活性和可维护性。 - **拦截器**:可以创建自定义拦截器来处理分页相关的请求参数,如页码、每页条数等,便于在多个Action之间...

    实用的struts2分页

    在JSP页面中,使用Struts2的标签库展示分页数据。例如,可以使用`&lt;s:iterator&gt;`标签遍历学生列表,展示每一页的学生信息。同时,提供上一页、下一页的链接,以便用户浏览不同页的数据。 #### 结论 Struts2的分页...

    struts2.0实现数据分页

    在Struts2中,数据分页通常通过Action类和视图(JSP或Freemarker)配合完成。Action类负责从数据库中获取指定页码的数据,并将这些数据传递给视图进行展示。分页参数,如当前页数、每页显示条数等,通常通过HTTP请求...

    struts1.2实现的简单分页代码

    2. **编写Action类**:在Action类中,获取ActionForm中的分页参数,调用DAO查询数据库并封装结果到一个List对象中。 3. **实现DAO**:根据Action传入的参数,构造SQL语句进行分页查询,并返回结果集。 4. **配置...

    Struts + Hibernate 实现简单分页功能

    总的来说,使用Struts和Hibernate实现分页功能,需要结合MVC模式和ORM思想,合理设计数据访问层和业务逻辑层,同时确保前端与后端的有效通信。这个过程涉及到了Java编程、数据库操作、框架理解和页面渲染等多个方面...

    Struts2实现分页代码

    本文档将详细介绍如何使用Struts2框架实现数据分页功能。 #### 二、技术栈与环境配置 本示例使用的技术栈包括:JDK1.6、MyEclipse6.0、Tomcat6.0、MySQL5.0以及Struts2.0.11。 1. **开发环境准备** - 首先确保...

    struts 2分页 实例

    - 项目名称可以自定义,例如命名为“Struts2Pagination”。 2. **导入Struts 2 相关JAR包**: - 下载Struts 2 的最新稳定版本,并解压出所有相关的JAR文件。 - 将这些JAR包添加到项目的Build Path中。 - 除了...

    java web中的struts分页组件

    本代码示例专注于Struts中如何实现分页功能。 首先,我们需要了解分页的基本概念。分页是将大量数据分为多个较小的、易于管理的部分,每次只加载一部分数据到客户端。这通常通过两个主要部分实现:前端(用户界面)...

Global site tag (gtag.js) - Google Analytics