`

Jpage分页+Hibernate+Ajax+jquery+JSON通用技术<一>

阅读更多

首先:

1.工具类page:

package com.common.util;

import java.util.List;

@SuppressWarnings("unchecked")
public class Page
{
private int totalRows; // 总行数
private int pageSize; // 每页显示的行数
private int currentPage; // 当前页号
private int totalPages; // 总页数
private int startRow; // 当前页在数据库中的起始行
private List list;
public Page(int _totalRows, int _pageSize, int _currentPage)
{
   totalRows = _totalRows;
   pageSize = _pageSize;
   currentPage = _currentPage;
   // 计算总页数
   totalPages = totalRows / pageSize;
   int mod = totalRows % pageSize;
   if (mod > 0)
   {

totalPages++;

}
   currentPage = 1;
   startRow = 0;
}

public int getCurrentPage()
{
   return currentPage;
}

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

/**
* 获得每页显示的行数
*
* @return
*/
public int getPageSize()
{
   return pageSize;
}

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

/**
* 获得当前页在数据库中的起始行
*
* @return
*/
public int getStartRow()
{
   return startRow;
}

public void setStartRow(int startRow)
{
   this.startRow = startRow;
}

public int getTotalPages()
{
   return totalPages;
}

public void setTotalPages(int totalPages)
{
   this.totalPages = totalPages;
}

public int getTotalRows()
{
   return totalRows;
}

public void setTotalRows(int totalRows)
{
   this.totalRows = totalRows;
}

/**
* 第一页
*/
public void first()
{
   currentPage = 1;
   startRow = 0;
}

/**
* 前一页
*/
public void previous()
{
   if (currentPage == 1)
   {
    return;
   }
   currentPage--;
   startRow = (currentPage - 1) * pageSize;
}

/**
* 下一页
*/
public void next()
{
   if (currentPage < totalPages)
   {
    currentPage++;
   }
   startRow = (currentPage - 1) * pageSize;
}

/**
* 最后一页
*/
public void last()
{
   currentPage = totalPages;
   startRow = (currentPage - 1) * pageSize;
}

/**
* 跳转到某一页
*/
public void any()
{
   if (currentPage < 1)
   {
    currentPage = 1;
   }
   if (currentPage > totalPages)
   {
    currentPage = totalPages;
   }
   startRow = (currentPage - 1) * pageSize;
}

public void refresh(int _currentPage)
{
   currentPage = _currentPage;
   if (currentPage > totalPages)
   {
    last();
   }
}

public List getList() {
   return list;
}

public void setList(List list) {
   this.list = list;
}
}

 


2.工具类pageHelp:

package com.common.util;

import javax.servlet.http.HttpServletRequest;

public class PageHelp
{

public static Page getPage(HttpServletRequest request, int totalRows,
    int pageSize, int currentPage)
{
   Page page = new Page(totalRows, pageSize, currentPage);
   // 获得当前页号
   String pagecount = currentPage + "";
  
   // 如果当前页号为空,表示为首次查询该页
   // 如果不为空,则刷新page对象,输入当前页号等信息
   if (pagecount != null)
   {
    page.refresh(Integer.parseInt(pagecount));
   }
  
   // 获取当前执行的方法,首页,前一页,后一页,尾页。
   String pagerMethod = "any";
   if (request.getParameter("pageMethod") != null && !"undefined".equals(request.getParameter("pageMethod")))
   {
    pagerMethod = request.getParameter("pageMethod");
   }
  
   if (pagerMethod != null)
   {
    if (pagerMethod.equals("first"))
    {
     page.first();
    }
    else if (pagerMethod.equals("previous"))
    {
     page.previous();
    }
    else if (pagerMethod.equals("next"))
    {
     page.next();
    }
    else if (pagerMethod.equals("last"))
    {
     page.last();
    }
    else
    {
     page.any();
    }
   }
   return page;
}
}


3.ClientDAOl类:

以客户列表为例:

public int getTotal()
{
   String hql = "select count(*) from Client";
   Query query = getSession().createQuery(hql);
   return Integer.valueOf(query.uniqueResult().toString());
}

@SuppressWarnings("unchecked")
public List findByPage(int startRow, int pageSize)
{
   Criteria cri = getSession().createCriteria(client.clazz);
   cri.setFirstResult(startRow);
   cri.setMaxResults(pageSize);
   return cri.list();
}


4.ClientBIZ类:

public int getTotal()
{
   return clientDAO().getTotal();
}
public List findByPage(int startRow, int pageSize)
{
   return clientDAO().findByPage(startRow, pageSize);
}

 


5.Action类:
public Page getPage(ClientBiz biz, HttpServletRequest request)
{
   int totalRows = biz.getTotal();
  
   int pageSize = 5;
   if (request.getParameter("pageSize") != null && !"undefined".equals(request.getParameter("pageSize")))
   {
    pageSize = Integer.parseInt(request.getParameter("pageSize"));
   }
  
   int currentPage = 1;
   if (request.getParameter("currentPage") != null && !"undefined".equals(request.getParameter("currentPage")))
   {
    currentPage = Integer.parseInt(request.getParameter("currentPage"));
   }
  
   Page page = PageHelp.getPage(request, totalRows, pageSize, currentPage);
   List list = biz.findByPage(page.getStartRow(), page.getPageSize());
  
   if (list != null || !list.isEmpty())
   {
    page.setList(list);
   }
   return page;
}

//使用Ajax技术执行此方法
public void dolist(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
   Page page = getPage(clientBiz, request);
   JsonConfig config = new JsonConfig();
   config.setExcludes(new String[]{"handler","hibernateLazyInitializer"});
   JSONObject json = JSONObject.fromObject(page,config);
   print(json.toString(), response);
}

分享到:
评论
2 楼 yanyanquan 2010-07-14  
本人急需楼主的分页案例。能给我发下完整案例吗?
我的邮箱是:382013385@qq.com
十分感谢!!
1 楼 yanyanquan 2010-07-14  
本人急需楼主的分页案例。先谢谢出来。
能给我发下完整案例吗?
我的邮箱是:382013385

十分感谢!!

相关推荐

Global site tag (gtag.js) - Google Analytics