java分页功能实现代码 java做分页

java中如何实现百度中的分页

/**

创新互联从2013年成立,是专业互联网技术服务公司,拥有项目成都做网站、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元金牛做网站,已为上家服务,为金牛各地企业和个人服务,联系电话:13518219792

* 分页代码

* @author Star

* 配顷蔽@version 1.0 2008/07/08

*/

public class CutPage 培州implements Serializable{

private static Log log = LogFactory.getLog(CutPage.class);

private int curPageNo = 0; // 当前页数,从0开始

private int size = 0; // 所有数据条数

private String url; // 页面跳转的路径

private List showList; // 当前页面需要显示的数据列表

private int pageSize = 20;// 每页显示的数据条数

private int groupSize = 1;// 多少页为一组

private String pageNavigation;// 导航条

/**

 * 每次通过sql语句从数据库里面分组取出需要显示的数据

 * 

 * @param request

 *            javax.servlet.http.HttpServletRequest对象

 * @param sql

 *            String 查询数据库的sql语句

 * @param pageSize

 *            int 每页显示的条数

 * @param groupSize

 *            int 分成多少组

 * @param url

 *            String 页面跳转的路径乎败,若没有特殊的参数传递,可以传入null或"",

 *            如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径

 */

public void init(HttpServletRequest request, String sql, int pageSize,

int groupSize, int pageNo, String url) {

// 上一页、下一页跳转路径

if (url != null) {

this.url = url;

} else {

this.url = request.getRequestURL() + "";

}

if (pageSize  0)

this.pageSize = pageSize;// 每页多少条记录

if (groupSize  0)

this.groupSize = groupSize;

// 当前第几页

if (pageNo  0) {

this.curPageNo = 0;

} else {

this.curPageNo = pageNo;

}

int curGroup = this.curPageNo / this.groupSize + 1;

// 是否是新的一组数据,如果是则到数据库取数据

this.size = parseInt(request.getSession().getAttribute("page_all_size")

+ "", 0);

if (this.curPageNo % this.groupSize == 0

|| (request.getSession().getAttribute("cur_group") != null  parseInt(

"" + request.getSession().getAttribute("cur_group"), 1) != curGroup)

|| this.size == 0 || request.getParameter("reload") != null) {

request.getSession().setAttribute("cur_group", curGroup);

if (pageNo  0

 request.getSession().getAttribute("page_sql") != null) {

sql = request.getSession().getAttribute("page_sql") + "";

} else {

request.getSession().setAttribute("page_sql", sql);

}

this.size = getTotalCount(sql);

List list = getPageData(sql, (this.curPageNo / this.groupSize)

* this.pageSize * this.groupSize, this.pageSize

* this.groupSize);

request.getSession().setAttribute("page_all_size", this.size);

request.getSession().setAttribute("page_cur_list", list);

this.setShowList(list);// 设置页面上的显示数据

} else {

this.setShowList((List) request.getSession().getAttribute(

"page_cur_list"));// 设置页面上的显示数据

}

}

/**

 * 每次通过sql语句从数据库里面分组取出需要显示的数据

 * 

 * @param request

 *            javax.servlet.http.HttpServletRequest对象

 * @param sql

 *            String 查询数据库的sql语句

 * @param pageSize

 *            int 每页显示的条数

 * @param groupSize

 *            int 分成多少组

 * @param url

 *            String 页面跳转的路径,若没有特殊的参数传递,可以传入null或"",

 *            如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径

 */

public void init(HttpServletRequest request, String sql, int pageSize,

int groupSize, String url) {

// 当前第几页

String curPage = request.getParameter("pageNo");

init(request, sql, pageSize, groupSize, parseInt(curPage, -1), url);

}

/**

 * 每次通过sql语句从数据库里面分组取出需要显示的数据

 * 

 * @param request

 *            javax.servlet.http.HttpServletRequest对象

 * @param sql

 *            String 查询数据库的sql语句

 * @param pageSize

 *            int 每页显示的条数

 * @param groupSize

 *            int 分成多少组

 * @param url

 *            String 页面跳转的路径,若没有特殊的参数传递,可以传入null或"",

 *            如是在aciton里面调用,并且action是继承自DispatherAction的话最好传入完整的路径

 */

public void init(HttpServletRequest request, String sql, int pageSize,

int groupSize, int pageNo) {

init(request, sql, pageSize, groupSize, pageNo, "");

}

太多了,贴不下,见附件

在Java中,用三元运算符实现分页功能

实现原理很简单,就是建立一个Page类,里面放当前访问的页数(这个是从客户浏览器传到后台的数据,所以你的分页需要用它来定位记录的条目)和每一搏猜页显示的记录行数。然后通过分页计算就可以得出下列数据。

(假定你的页数从1开始)

1、总页数 = 总记录数/每页大小,如果0!=总记录数%每页大小,那么总页数再+1

2、当前页数(从浏览器传递的参数中获得)

3、表记录的起始位置=(当前页数-1)*每页大小

4、总旁银念记录数(select count(*) from [表名] [where [条件]],从数据库中查询得到)

5、每页大小,可以固定,也可以从页面传过来

有了这几个参数之后,就用sql语句查出对应的记录就可以了。

mysql数据库用limit 表记录的起始位置,每页大小 语句添加到你的查询语句最后面

sqlserver数据库运困用top语句和not in 来做

oracle数据库用rownum来做

再给你一段分页对象代码,你自己先读一下

pre t="code" l="java"public class Page {

private long totalCount = 0;// 总记录数

private int pageNumber = 1;// 当前页号,默认显示第一页

private int pageSize = 20; // 每页大小,默认每页20条

private int totalPage = 0;// 总页数,默认为0

private int startRow = 0;// 起始记录行号,默认为从表头开始

/**

* 分页计算方法,由setTotalCount调用

*/

public void pagination() {

// 计算总页数

if (this.totalCount % pageSize == 0)

this.totalPage = new Long(this.totalCount / pageSize).intValue();

else

this.totalPage = new Long(this.totalCount / pageSize).intValue() + 1;

// 排除错误页号

if (this.pageNumber 1)

this.pageNumber = 1;

if (this.pageNumber this.totalPage)

this.pageNumber = this.totalPage;

// 计算起始行号

this.startRow = (this.pageNumber - 1) * this.pageSize;

}

public long getTotalCount() {

return totalCount;

}

public void setTotalCount(long totalCount) {

this.totalCount = totalCount;

this.pagination();

}

public int getPageNumber() {

return pageNumber;

}

public void setPageNumber(int pageNumber) {

this.pageNumber = pageNumber;

}

public int getPageSize() {

return pageSize;

}

public void setPageSize(int pageSize) {

this.pageSize = pageSize;

}

public int getTotalPage() {

return totalPage;

}

public void setTotalPage(int totalPage) {

this.totalPage = totalPage;

}

public int getStartRow() {

return startRow;

}

public void setStartRow(int startRow) {

this.startRow = startRow;

}

}

java分页类实现

这个很简单啊,如果总记录数竖饥除以每页的记录数正好除尽的话码罩,那么最大页数就是总记录数除以每页的记录数,否则就是总记录数除以每页的记录数+1咯,例如总记录数为100条,每页是20条,那么分为5页(100/20),如果总记录数为101条,那么应该分为(101/20+1)也就是6页,有余模返问题吗


本文标题:java分页功能实现代码 java做分页
标题来源:http://cdiso.cn/article/ddppdsi.html

其他资讯