jsp实现分页技术

     实现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> 

效果如下:

 





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值