您的位置:首页 > Web前端 > JavaScript

jsp实现分页技术

2011-11-18 10:56 537 查看
实现jsp分页功能有两种方式:

一种是假分页--->从数据库中把所有的数据给查询出来,放入一个集合对象中,然后在通过一定的算法从集合中去取出需要的数据,并实现分页,这种假分页方式虽然实现了也页面的分页,但是效率不高。

另外一种就是真分页-->从数据库中只查询一部分数据出来显示在页面上,下面我结合SSJ(hibernate)+pager插件实现jsp页面的分页:

第一步、先定义好一个通用的分页模版类,我定义为PageModel:代码如下:

import java.util.List;

/**

* 分页模型

* @author Administrator

*

*/

public class PageModel {

/**

* 总记录数

*/

private int total;

/**

* 但前页面记录集

*/

private List currentPagelistDate;

public int getTotal() {

return total;

}

public void setTotal(int total) {

this.total = total;

}

public List getCurrentPagelistDate() {

return currentPagelistDate;

}

public void setCurrentPagelistDate(List currentPagelistDate) {

this.currentPagelistDate = currentPagelistDate;

}

}

第二步、 在业务处理类中定义一个方法来处理分页 方法名为paging(int offet,int pagesize)

在类中使用注解方式为EntityManager 注入依赖对象 @PersistenceContext EntityManager em;

public PageModle paging(int offset,int ){

//定义一个Query对象

Query queryTotal=em.createQuery("select o from Object o");

//定义一个整型变量用来保存记录集

int total=queryTotal.getResultList().size();

//定义一个Query对象

Query queryResult=em.createQuery("select o from Object o");

//从数据库中的第几条数据查询起

queryResult.setFirstResult(offset);

//要从数据库中查询出最多的记录

queryResult.setMaxResults(pagesize);

//定义一个List对象用来保存查询出当前页面的集

List currentPageList=queryResult.getResultList();

//实例化对象PageModel

PageModel pm=new PageModel();

pm.setTotal(total);

pm.setCurrentPagelistDate(currentPagelist);

return pm;

}

第三步、在struts2.1 Action中调用业务处理类中的paging(int offset,int currentPageList)代码如下:

public String getPages() throws Exception{

//默认设置从数据库中的第一条数据开始查询,总共要查询3条数据

int offset=0;

int pagesize=3;

if(request.getParameter("pager.offset")!=null)

{

offset=Integer.parseInt(request.getParameter("pager.offset"));

}

PageModel pm=业务处理类.pagings(offset, pagesize);

//把PageModel对象保存在request范围内中

request.setAttribute("pm",pm);

return "success";

}

第四步、需要在jsp中页面进行数据的显示:

1、需要从网上下载一个pager-taglib.jar,导入项目中

2、在jsp页面中把设置一个标签指令:<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>

3、下面需要写以下代码:

<!-- 分页 -->

<pg:pager url="action名称!action方法.action" items="${pm.total}" export="currentPageNumber=pageNumber" maxPageItems="3">

<pg:first>

<a href="${pageUrl}">首页</a>

</pg:first>

<pg:prev>

<a href="${pageUrl}">上一页</a>

</pg:prev>

<pg:pages>

<c:choose>

<c:when test="${currentPageNumber eq pageNumber}">

<font color="red">${pageNumber }</font>

</c:when>

<c:otherwise>

<a href="${pageUrl }">${pageNumber }</a>

</c:otherwise>

</c:choose>

</pg:pages>

<pg:next>

<a href="${pageUrl }">下一页</a>

</pg:next>

<pg:last>

<a href="${pageUrl }">尾页</a>

</pg:last>

</pg:pager>

效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: