`

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

十分感谢!!

相关推荐

    jPage分页--异步分页

    为了解决这个问题,分页技术应运而生。jPage 是一个流行的 JavaScript 分页插件,它支持异步分页,能够在用户滚动页面时动态加载数据,从而提高网页性能和用户体验。 ### 1. jPage 分页原理 jPage 的核心思想是...

    jPage v1.0.8 for jQuery js分页

    `jPage` 是一个基于 jQuery 的轻量级分页插件,专为解决这个问题而设计。版本 `v1.0.8` 提供了稳定且高效的分页解决方案,适用于各种网页项目。 ### 一、安装与引入 要使用 `jPage`,首先确保你的项目已经包含了 ...

    jPage jquery-ajax表格动态分页.zip

    jPage是一款基于jQuery的插件,专门用于实现表格的AJAX动态分页功能。它能够有效地减少页面加载时间,提高用户浏览效率,使得数据管理更加灵活高效。 jPage的核心在于使用AJAX技术,通过异步请求获取服务器上的数据...

    通用分页组件JPage

    JPage&lt;MyEntity&gt; page = new JPage&lt;&gt;(pageNum, pageSize); // 使用MyBatis的SqlSession查询数据 List&lt;MyEntity&gt; dataList = sqlSession.selectList("selectByPage", page); // 将数据绑定到JPage page.setData...

    jQuery.jpage.js分页插件制作分页列表切换动画效果代码

    jQuery.jpage.js是一款基于jQuery的轻量级分页插件,用于实现网页内容的分页显示,提升用户体验,尤其在处理大量数据时效果显著。它提供了动态加载、切换动画等多种功能,使得用户在浏览长列表时能流畅地进行翻页...

    jPage分页(只针对Sql Server数据库)

    1、本版分页只针对Sql Server数据库,采用top n分页方式,节约资源。 2、支持GridView、DataGrid、DataList等数据控件。 3、本分页已应用于数据量百万级的项目中。 4、使用简单,并包含多种样式布局 一、使用方法:...

    jquery分页组件

    &lt;title&gt;jQuery分页组件示例&lt;/title&gt; &lt;script src="https://code.jquery.com/jquery.min.js"&gt;&lt;/script&gt; &lt;script src="jPage.min.js"&gt;&lt;/script&gt; &lt;style&gt; /* 自定义分页样式 */ &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;!-- ...

    基于Jquery实现表格动态分页实现代码

    &lt;link rel="stylesheet" type="text/css" href="&lt;%=basePath %&gt;css/theme/default/css/jpage.css"&gt;&lt;/link&gt; &lt;link ID="skin" rel="stylesheet" type="text/css" href="&lt;%=basePath %&gt;css/config.css" /&gt; &lt;script ...

    jquery分页

    **jQuery分页技术详解** 在Web开发中,尤其是在大数据量展示的场景下,分页是一种不可或缺的功能,它能够有效地组织和管理数据,提高用户体验。jQuery,一个轻量级的JavaScript库,提供了简单易用的API,使得实现...

    jquery 分页插件

    在网页开发中,数据量庞大的情况下,为了提高用户体验和页面加载速度,通常会采用分页技术来展示数据。jQuery是一个非常流行的JavaScript库,它提供了一系列的分页插件,可以帮助开发者轻松实现页面分页功能。本篇...

    jsp分页标签JPage(HOT)

    `jsp分页标签JPage`是一个在Java Web开发中常见的自定义标签库,用于实现页面数据的分页展示。在这个项目中,作者提供了两种不同的分页样式:一种是基础的“上一页”和“下一页”的切换,另一种则是模仿百度搜索结果...

    jquery中jhpage分页的改进版

    本文将深入探讨“jQuery中jhpage分页的改进版”,这是一个专为网页实现分页功能的插件,它在原有的基础上进行了优化,特别是增加了数据位置的显示功能,从而提供更友好的用户体验。 首先,我们来理解什么是分页。在...

    JPage组件下载

    JPage组件是一个在IT行业中广泛使用的前端开发框架,主要用于构建高效、可维护的网页应用。这个框架通过提供一系列预封装的UI组件和便捷的数据绑定机制,帮助开发者快速地搭建交互丰富的用户界面。JPage组件下载通常...

    JS数据分页

    为了解决这个问题,我们可以采用JS数据分页技术,它允许用户按需加载数据,提高用户体验并减轻服务器压力。 **一、JS分页原理** JS数据分页的基本思想是:前端根据用户的操作(如点击“下一页”按钮)动态请求...

    java分页资料

    通过这个"java分页资料总结",开发者可以深入了解和掌握Java环境下的分页技术,无论是数据库层面还是应用层面上,都能找到适用的解决方案。理解并熟练运用这些知识,将有助于构建更高效、用户体验更好的数据驱动应用...

    javascript 支持页码格式的分页类

    但是他们插件的附属功能很多又不需要,而且没必要就为了这么一个功能区引用这个库,为速度考虑吧,当然你服务器好也行,但是... jpage.js 代码如下:/* 排序工具 by Funny ZAk &lt;silenceacegmail&gt; 2009-8-23 “调用方式

    使用Java编译器API和类加载器编写Scrapbook程序.pdf

    每个打开的.jpage文件又会启动一个独立的Java虚拟机,为了得到上述的优点,需要较多的额外工作,同时也会至少需要启动两个Java虚拟机(一个用于运行Eclipse IDE,一个用于.jpage文件中的代码片段)。 因此,为了...

Global site tag (gtag.js) - Google Analytics